请求中的java字符编码。getRemoteUser()
每个请求都通过Microsoft IIS和连接到Tomcat的AJP13连接器发送。有些用户名包含德语特殊字符。如果用户名是“Kloß”,则request.getRemoteUser()
返回“KloÃ?”。在Tomcats localhost_access_日志中,用户名正确记录为“Kloß”
如何将request.getRemoteUser()
的返回值转换为UTF-8字符串
我试过但没有成功:
String s1 = request.getRemoteUser()
String s2 = org.apache.commons.codec.binary.StringUtils.newStringUtf8(request.getRemoteUser().getBytes())
# 1 楼答案
我想你需要找出
getRemoteUser()
的编码结果在纯UTF-8系统上,我执行了以下操作:
哪本书
将
c39f
馈送到文件格式的搜索中。信息我们发现它是一个LATIN SMALL LETTER SHARP S在它的utf-8十六进制表示中因此,用
request.getRemoteUser()
执行上面的printf,并尝试找出ß
所在的字符集。如果请求来自windows机器,我猜是“CP1252”