[英]Windows-1252 encoding - incorrect characters displayed
我有一个带有在Windows-1252中编码的字符的缓冲区。 但是,当我使用适当的编码创建一个新的String时,而不是预期的结果,我经常会得到询问标记,例如。
byte[] tmps = new byte[] {(byte) 0xfb};
System.out.println (new String (tmps,0,1,"Windows-1252" ));
结果,系统应显示“u”字符,其上方带有“^”。 而是显示“?”。
任何想法?
首先,Windows-1252 是受支持的编码:
如果不是,你会在new String (...,"Windows-1252")
得到UnsupportedEncodingException
。 (这就是javadoc所说的!)
Oracle Java文档称Windows-1252位于“基本编码集”中 - http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html,http:// docs .oracle.com / javase / 6 / docs / technotes / guides / intl / encoding.doc.html ,etcetera。
我认为这里最可能出现的问题是输出端。 具体来说,Java可能会认为您的语言环境的默认字符集是ASCII或不支持该代码点的内容。
消除Windows-1252
作为问题原因的一种方法是使用Unicode转义编写等效字符串; 例如
System.out.println("\u00fb");
我已经发现了这个。
菜单运行/运行配置/下一个Java应用程序和您自己的应用程序名称/选项卡常用/下一个编码设置为UTF-8
从现在开始,Windows 1250和1252个字符似乎都显示正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.