2015-06-16 75 views
1

假設中文字符「你好」中有一個字符串,將字符串轉換爲Unicode的正確結果是「\ u4f60 \ u597d」,結果我從下面的代碼中得到是「\ ufffd \ ufffd \ ufffd」。爲什麼???將中文字符串轉換爲Java中的Unicode

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(); 
    } 
} 

如果設置了文本= 「\ u4f60 \ u597d」 中,終端顯示 「你好」。

+2

您的終端配置爲支持UTF-8嗎? – Makoto

回答

2

源文件編碼很可能與編譯器使用的編碼不一致。使用javac -encoding utf-8javac -encoding gb2312或其他什麼取決於您的源文件編碼。

相關問題