我有一个管理文档附件的Java代理(在Linux服务器上运行),但是名字中的重音字符有错误(ò,è,ùecc..)。
我写了这段代码来显示使用的字符集:
OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
String enc = writer.getEncoding();
System.out.println("CHARSET: " + enc);
此显示
CHARSET: ASCII
在一切工作正常的服务器中,同一行打印:
CHARSET: UTF8
服务器具有相同的配置(与“Internet站点”一起使用,其中“将UTF-8用于输出”设置为“是”)。
有关要设置的参数(Domino / Linux)的想法吗?
更新
我会尝试更好地解释......
我通过Ajax调用调用代理。 在参数中,我传递“ààà”字符串。当我尝试在UTF-8内部代理中解码时,字符串用
解析"???"
而不是
"ààà"
这是System.out.println()在控制台中显示的内容。
在另一台Domino服务器上,一切正常。我不明白这是服务器设置还是OS设置问题。
答案 0 :(得分:2)
只是一个建议,但您可以将示例中的第一行更改为:
OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream(),
Charset.forName("UTF-8"));
这将强制OutputStreamWriter为UTF8,您的示例代码将在两台服务器上显示一致的输出。在不知道更多细节的情况下,我无法确定这是否与真实问题相关。
答案 1 :(得分:-1)
虽然这可能无法直接回答您的问题,但您可能对this有关编码的文章感兴趣。