java以特定编码解析字符串_如何解析与Java编码不同的字符串

我有一个从Word文档中读取的字符串。我认为它采用“ Cp1252”编码。Java使用UTF8。

如何在该字符串中搜索Cp1252中的那些特殊字符并将其替换为适当的UTF8字符?

具体来说,我想将“ En Dash”字符替换为普通的“-”

以下代码块采用了来自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编码在字符串上获取字节时,该破折号的十六进制值为ffffff96。如果我使用UTF8来获取字节数,则它作为3个十六进制值而不是1个。

这给了我以下输出:

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仍然为我提供了垃圾字符,而不是纯文本“-”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值