关于用JAVA实现Post中的字符代码转换

关于用JAVA实现Post中的字符代码转换,java,struts2,Java,Struts2,日元马克用两种方式表示 0x5c(ASCII) 0xa5(utf-8) 当我在Java6(Struts2的环境)中发布0xA5时,在我在日志中输出的阶段,我变成了0x5C 具体来说,字符编码的替换将在哪里执行?我相信您会问日元符号何时将变为ASCII-答案是基本默认字符编码何时从UTF-8变为ASCII。这可能发生在许多地方: 在使用的页面模板技术(JSP、Freemarker?)- 在servlet容器中- 在JVM中- 您能提供一些关于您目前为这些设置的更多信息吗?我认为问题不在于字

日元马克用两种方式表示

  • 0x5c(ASCII)
  • 0xa5(utf-8)
当我在Java6(Struts2的环境)中发布0xA5时,在我在日志中输出的阶段,我变成了0x5C


具体来说,字符编码的替换将在哪里执行?

我相信您会问日元符号何时将变为ASCII-答案是基本默认字符编码何时从UTF-8变为ASCII。这可能发生在许多地方:

  • 在使用的页面模板技术(JSP、Freemarker?)-
  • 在servlet容器中-
  • 在JVM中-

您能提供一些关于您目前为这些设置的更多信息吗?

我认为问题不在于字符转换,而在于错误转换或损坏。ASCII中的字符5C是“\”。对于我来说,什么样的误解会把A5变成5C,这一点并不明显。日元符号前后的其他字符是否也被误解了

开始查找问题原因的前两个地方是代码从字符串转换为字节[],然后再转换回来。在客户端转换POST数据时,应确保设置在HTTP请求内容类型头中使用的字符集。然后在服务器端,确保代码使用传入请求的Content-Type头中指定的字符集