我有一個字符串,我從Word文檔讀入。我認爲它是在「Cp1252」編碼。 Java使用UTF8。如何解析與java編碼不同的字符串
如何在Cp1252中爲那些特殊字符搜索該字符串並將其替換爲適當的UTF8字符?
具體而言,我想,以取代「短劃線」字符與普通「 - 」
下面的代碼塊需要其從Word文檔來的projDateString,並試圖做這樣的事情
char[] test = projDateString.getBytes("Cp1252");
for(int i = 0; i < test.length; i++){
System.out.println "test["+ i + "] = " + Integer.toHexString((byte)test[i]);
}
String projDateString2 = new String(test);
projDateString2.replaceAll("\0x96", "\u2013");
System.out.println("projDateString2: " + projDateString)
我不確定我是否正確設置了projDateString2。正如你所看到的,當我使用Cp1252編碼對字符串進行getBytes時,該短劃線的十六進制值是ffffff96。如果我用UTF8 getBytes,它將以3個十六進制值而不是一個來表示。
這給了我下面的輸出:
test[0] = 30
test[1] = 38
test[2] = 2f
test[3] = 32
test[4] = 30
test[5] = 31
test[6] = 30
test[7] = 20
test[8] = ffffff96
test[9] = 20
test[10] = 50
test[11] = 72
test[12] = 65
test[13] = 73
test[14] = 65
test[15] = 6e
test[16] = 74
projDateString2: 08/2010 ΓÇô Present
正如你所看到的,更換什麼也沒做,和println的仍然給我的垃圾字符,而不是一個純文本「 - 」
可能的重複[編碼轉換在java中](http://stackoverflow.com/questions/229015/encoding-conversion-in-java) – kamaci 2012-08-26 14:25:24