我们有一个应用程序,该应用程序在Mac上运行时会正确输出£(磅)符号,但会输出? (问号)在测试服务器上运行。
下面是代码示例和生成的输出
LOGGER.debug(" TESTING file.encoding=" + System.getProperty("file.encoding"));
LOGGER.debug(" TESTING Charset.defaultCharset=" + Charset.defaultCharset());
try {
LOGGER.debug(" TESTING InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("/tmp/PrintCharSets.java")).getEncoding() );
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String pound = "£";
LOGGER.debug(
" TESTING - 0 - Test Character [" + pound + "]");
测试服务器上的输出
TESTING file.encoding=UTF-8
TESTING Charset.defaultCharset=US-ASCII
TESTING InputStreamReader.getEncoding=ASCII
TESTING - 0 - Test Character [?]
在Mac上输出
TESTING file.encoding=UTF-8
TESTING Charset.defaultCharset=UTF-8
TESTING InputStreamReader.getEncoding=UTF8
TESTING - 0 - Test Character [£]
我想这是由于字符串的编码引起的。 我们可以看到defaultCharset和编码有所不同。 但是,您能建议我如何通过更改代码来使£符号在测试服务器上正确输出。
此应用程序将在不同的服务器上运行,所以我不能认为编码是一致的。
答案 0 :(得分:0)
与UTF-8编码的文本文件一样,文件在两台计算机上的加载方式相同。这意味着机器之间的两件事之一有所不同:
“替换字符”通常是带有问号的菱形。但是,在许多字体中,此类字符不可用。如果缺少替换字符,则单个问号本身就是替换替换字符。
如果您复制显示“?”的文件转到Mac,它现在显示英镑符号,问题不是文件或编码,问题是字体。