我有一个用Windows-1252编码的字符的缓冲区。但是,当我使用适当的编码创建新的String时,而不是预期的结果时,我经常会收到询问标记。
byte[] tmps = new byte[] {(byte) 0xfb};
System.out.println (new String (tmps,0,1,"Windows-1252" ));
结果,系统应在其上方显示“u”字符和“^”。而是显示“?”。
任何想法?
最佳答案
首先,Windows-1252是受支持的编码:
UnsupportedEncodingException
中得到一个new String (...,"Windows-1252")
。 (这就是javadoc所说的!)我认为这里最可能出现的问题是在输出端。具体来说,Java可能会认为您的语言环境的默认字符集是ASCII或不支持该代码点的字符集。
消除
Windows-1252
引起问题的一种方法是使用Unicode转义来编写等效的字符串。例如 System.out.println("\u00fb");