我创建了一个Java程序(REST)服务。整个开发/测试都是在Windows上完成的,现在正在进行生产测试的部署过程。然而,出现了“小”的编码问题:
String s3 = new String("grün".getBytes(), "UTF-8");
logger.info(s3);
logger.info("das ist wirklich grün");
logger.info(new String("das ist wirklich grün".getBytes("UTF-8"), "UTF-8"));
我通过HTTP属性接收到一些值(Web应用程序托管在Tomcat上,在具有身份验证插件的Apache后面)。这些值像第1行中所示进行编码。(此值在Windows和Linux上均显示)。
当我将其转换为UTF-8,如第1行中所示,并将其写入日志文件(log4j),我在Windows机器上看到了“grün”一词(这是正确的)。在Linux服务器上,仍然有相同的输出。
然后我尝试直接使用Umlaute(üäö等),如第2行中所示,在Windows和Linux上,该值都被正确地写入日志文件。然后我尝试进行一些转换,如第3行中所示,但结果相同:两个操作系统都显示相同的结果。
这两台机器在Java中具有相同的Locale(Locale.getDefault())->我已经尝试过了。我无法更改值插入HTTP请求的方式!