我认为解释我的问题的最简单方法是用一个小例子:
我在开头的字符串是:Pâtes
,结果应为:Pâtes
。我得到的结果仍然是Pâtes
我该如何解决这个问题?
这里是代码:
private String encode(String string) {
try {
byte ptext[] =string.getBytes("UTF8");
string = new String(ptext, "UTF8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return string;
}
答案 0 :(得分:1)
您的代码存在两个问题。第一个是您使用UTF8
,但正确的字符集是UTF-8
。
第二个是你基本上是在执行no op。通过调用byte ptext[] =string.getBytes("UTF-8");
,您说这个字符串是UTF-8。然后将它转换为UTF-8,它已经是。
我认为您的意思是输入为ISO-8859-1
,您希望将其转换为UTF-8
。 (这符合您给出的示例输入和输出)。
尝试:
private String encode(String string) {
try {
byte ptext[] = string.getBytes("ISO-8859-1");
string = new String(ptext, "UTF-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return string;
}
这假定您的初始字符串最初是从某处读取的,只包含ISO-8859-1
个字符。如评论中所述,您应该尝试确保从源正确加载数据(即,它仍然只是一个字节数组)。