【问题标题】:Non English UTF 8 characters changes when posted from HTML Form从 HTML 表单发布时,非英语 UTF 8 字符发生变化
【发布时间】:2015-02-17 14:03:03
【问题描述】:

当我从我的 HTML 表单中发布非英文字符时,在服务器端我收到了一些 UTF-8 字符,但不是原始的 UTF-8 字符。例如,在卡纳达语中,'ಇಲಾಖೆಯ' 变为 'ಇಲಾಖೆಯ',或者在法语中,'département' 变为 ' département'。
我的 HTML 表单有属性 accept-charsetUTF-8,我有 meta content typetext/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


【解决方案1】:

确保您的 JSP 具有 pageEncoding=UTF-8。在 web.xml 中:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

你的浏览器是 Internet Exploder 吗?

输入实际上是 UTF-8 还是从 MS Word 复制粘贴?

【讨论】:

  • Windows 剪贴板维护一个 UTF-16 版本和复制到它的任何字符串的本机字符编码。假设 OP 的浏览器还不错,他们通过剪贴板处理 Word 中的非 ASCII 字符将毫无问题。
猜你喜欢
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
相关资源
最近更新 更多