2016-04-05 92 views
-1
String name = ...; //some method 
System.out.println(name); //output \u5f20\u4f73\u73ae 

String name2 = "\u5f20\u4f73\u73ae"; //looks the same as the output above 
System.out.println(name2); \\output 張佳瑋 

我不知道爲什麼namename2輸出不同的字符串,以及如何使name具有輸出name2相同。字符串文字不工作

回答

2

如果System.out.println(name)打印出一個反斜槓後跟一個u等,那麼這就是在字符串的......而在

String name2 = "\u5f20\u4f73\u73ae"; 

...你有Unicode轉義序列......這只是3字符。如果你想反斜槓,你需要轉義:

String name2 = "\\u5f20\\u4f73\\u73ae"; 

更多關於字符串和字符文字轉義序列見JLS 3.3更多有關Unicode轉義序列(可以進來源的任何地方)和JLS 3.10.6

爲了走另外一條道路 - 如果你\然後u等開頭的字符串值,你就必須分析它。我不知道常規Java庫中的任何內容(除了通過Properties,這很奇怪),但我確信有第三方庫會這樣做。

但是,您應該查看數據的來源以及您是否真的應該自己解析它 - 通常使用Unicode轉義序列的文本是JSON的一部分或類似的東西,在這種情況下,您應該使用JSON解析器。

+0

謝謝。非常有用的答案。使用JSON解析器解決了我的問題! –