首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的浏览器将ISO-8859-15特殊字符(Œ,œ,Ÿ)转换为(1/4,5,5)

为什么我的浏览器将ISO-8859-15特殊字符(Œ,œ,Ÿ)转换为(1/4,5,5)
EN

Stack Overflow用户
提问于 2018-01-12 09:39:17
回答 1查看 299关注 0票数 0

我有一个HTML表单中的文本输入,我的页面配置为使用ISO-8859-15。

代码语言:javascript
复制
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">

当我键入以下字符之一(Œ,œ,Ÿ)并提交表单时,我可以在Firebug中看到它已被转换(25,5,¾),我在调试(Eclipse)时也会看到这一点。我不明白为什么。

维基百科网页:8859-15

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 13:43:45

很好地解释了这个问题。

今天,大多数web浏览器都不指定请求的字符集,即使它不是ISO-8859-1。这似乎违反了HTTP规范。大多数web浏览器似乎使用用于生成POST的页面编码来发送请求主体。

因此,您需要告诉应用程序在传入的HTTP请求中使用哪种编码。

您必须调用以下函数(在任何参数解析之前):

代码语言:javascript
复制
httpServletRequest.setCharacterEncoding("ISO-8859-15");

这一点上的最佳实践似乎是设置一个javax.servlet.Filter来执行此操作。春天来临时,我们需要这样的一种方式:

代码语言:javascript
复制
<filter>
    <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
    <servlet-name>webapp</servlet-name>
</filter-mapping>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48223367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档