我有一个字符串,我从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