我们在tomcat服务器v8.5.53上部署了一个应用程序,它为在Post请求中提交的用户名提供cookie。对于普通英文字符,这种在cookie中对用户信息进行base64编码,然后进行AES加密的机制工作得很好。但是对于像"Amélie.Lacoste“这样的特殊字符用户名,它会转换为"Am?lie.Lacoste”(如果您解密cookie响应)。
最奇怪的是,每次重新启动后,这个响应都会以某种方式得到修复,我们可以从这个特殊字符用户的相同应用程序中获得预期的用户信息。
发布于 2020-09-29 14:42:04
您可以尝试在编码和解码时显式设置字符集,如下所示:
public static void main(String[] args) throws UnsupportedEncodingException {
String test = "Amélie.Lacoste";
String encoded = Base64.toBase64String(test.getBytes("UTF-8"));
System.out.println(new String(Base64.decode(encoded), "UTF-8"));
}
发布于 2020-09-30 13:33:32
在tomcat catalina.sh中将file.encoding设置为utf-8为我解决了这个问题。
**JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"**
https://stackoverflow.com/questions/64121178
复制相似问题