字符串编码字符集问题

时间:2019-07-12 19:59:45

标签: java character-encoding

我收到了ISO-8859-1编码的字符串,但某些字符未正确解码...

这是我使用的代码:

InputStream plainIs = plainText.getIs();
StringBuilder stringBuilder = new StringBuilder();
String line = null;                 
try (BufferedReader bufferedReader = new BufferedReader(new 
    InputStreamReader(plainIs, "iso-8859-1"))) {    
    while ((line = bufferedReader.readLine()) != null) {
            stringBuilder.append(line);
    }
}                                       
body = stringBuilder.toString();
log.debug("Plain Text Body: "+body);

作为输入,我有一个这样的句子:

L=92objet est donc de proposer un outil simple =E9volutif

但翻译是

L�objet est donc de proposer un outil simple évolutif

字符= E9正确翻译为é,但字符L = 92的翻译如下:L·objet

知道我为什么只有部分转换吗?

1 个答案:

答案 0 :(得分:2)

ISO-8859-1中似乎没有定义92(在90年代没有定义),就像您在图表中的page上看到的那样。它显示éE9,这就是为什么它可以正确输出的原因。如果您尝试将'用作字符,请尝试使用=27而不是=92

还有ISO-8859-1here找到的Windows-1252的超集,该超集在第二个版本中确实定义了92

  

已定义了Microsoft Windows 2.0中使用的第二个版本,位置D7,F7、91和92。