【发布时间】:2015-02-17 14:03:03
【问题描述】:
当我从我的 HTML 表单中发布非英文字符时,在服务器端我收到了一些 UTF-8 字符,但不是原始的 UTF-8 字符。例如,在卡纳达语中,'ಇಲಾಖೆಯ' 变为 'ಇಲಾಖೆಯ',或者在法语中,'département' 变为 ' département'。
我的 HTML 表单有属性 accept-charset 和 UTF-8,我有 meta content type 到 text/html; charset=UTF-8。我的 JBoss 服务器也配置为UTF-8。
我在 Maven 中将源代码编译为 UTF-8。
我在 web.xml 中添加了 CharactersetEncoderFilter 作为 -
<filter>
<filter-name>encoding-filter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
是否有办法取回从 HTML 表单发布的原始文本?
【问题讨论】:
-
你做了什么诊断?你的代码是什么样的?来自浏览器的 HTTP 请求是什么样的? (理想情况下包括字节。)您如何观察损坏的字符串?目前这里没有足够的信息来帮助您。
-
当 UTF-8 二进制数据在另一个字符集(例如 ISO-8859-1)中处理时会发生您所描述的情况。因此,您在浏览器和接收数据的脚本之间存在字符集不匹配。
标签: java spring utf-8 character-encoding