Java源文件中用于电子邮件的Java字符串出现问题。该字符串包含“Protégé”。根据我的判断,我们的服务器环境使用UTF-8。
因此,我将其转换为UTF-8的“Protégé”。它在我们的服务器上很好用,但是当我在本地运行它时,它不能正确转换。因此,我将eclipse更改为在首选项下使用UTF-8,但它不会在本地翻译它。仍显示“Protégé”。有任何想法吗?
从评论:
我在本地和我们的服务器上运行:
OutputStreamWriter out = new OutputStreamWriter(new ByteArrayOutputStream());
System.out.println(out.getEncoding());
并且它在本地显示Cp1252,并在我们的JBoss服务器上显示UTF-8。我们最初使用“Protégé”作为字符串,但仅在JBoss中使用
显示“ Prot”。
当我使用
"Prot\u00e9g\u00e9"
时,它在本地运行良好,但是在我们的服务器上运行时,显示“ Protg”。 最佳答案
如果字符串包含"Prot\u00e9g\u00e9"
,则这将排除编译器编码问题(如SyntaxT3rr0r所暗示的),因为它现在就在Java字符串中(除非存在编译器错误,我不认为这是错误的)。
因此,我们在输出,传输和显示之间存在问题。您如何看待服务器的输出?可能是某处有一些重新编码会破坏您的字符串。或者在某个地方错误地声明了一些输出。
如果使用“终端/命令”窗口查看输出,请在连接到服务器之前考虑将其设置为UTF-8。
是的,Java内部使用UTF-16作为字符串,但是某些依赖于系统的编码既作为编译器默认值,又作为OutputStreamWriter / InputStreamReader和其他在字符串和字节之间转换的API的默认编码。看起来这是服务器上的UTF-8和客户端系统上的Windows-1252。这在这里并不重要。