在Java中将中文字符串转换为Unicode

假设中文Charater中有一个字符串“你好”,将字符串转换为Unicode的正确结果是“\ u4f60 \ u597d”,我从下面的代码得到的结果是“\ ufffd \ ufffd \ ufffd”。 为什么???

Java代码:

String str = "你好"; public String testEncoding(String str) { String result = ""; for(char ch : str.toCharArray()) result += "\\u" + Integer.toHexString(ch | 0x10000).substring(1); System.out.print(result); return result; } String text = testEncoding("你好"); public static void input(String text){ execShellCmd(String.format("am broadcast -a ADB_INPUT_TEXT --es msg \'%s\'", text)); } private static void execShellCmd(String cmd) { try { Process process = Runtime.getRuntime().exec("su"); OutputStream outputStream = process.getOutputStream(); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.write(cmd.getBytes("UTF-8")); dataOutputStream.flush(); dataOutputStream.close(); outputStream.close(); } catch (Throwable t) { t.printStackTrace(); } } 

如果我设置text =“\ u4f60 \ u597d”,终端显示“你好”。

源文件编码可能与编译器使用的编码不对应。 使用javac -encoding utf-8 javac -encoding gb2312 javac -encoding utf-8javac -encoding gb2312或其他任何内容,具体取决于您的源文件编码。