如何设置;内容类型。。。“字符集”;在请求头中使用HTML链接
我有一个简单的带有UTF-8编码链接的HTML页面如何设置;内容类型。。。“字符集”;在请求头中使用HTML链接,html,character-encoding,special-characters,urlencode,Html,Character Encoding,Special Characters,Urlencode,我有一个简单的带有UTF-8编码链接的HTML页面 <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <a charset='UTF-8' href='http://server/search?q=%C3%BC'>search for "ü"</a&
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<a charset='UTF-8' href='http://server/search?q=%C3%BC'>search for "ü"</a>
</body>
</html>
但是,我没有让浏览器包含内容类型:application/x-www-form-urlencoded;charset=utf-8
插入请求头。因此,我必须将Web服务器配置为假设所有请求都是UTF-8编码的(Tomcat server.xml中的URIEncoding=“UTF-8”)。但是管理员当然不会让我在生产环境(Websphere)中这样做
我知道使用Ajax很容易实现,但是在使用标准HTML链接时如何控制请求头呢?
charset
属性似乎不适合我(在IE8和FF 3.5中测试)
所需解决方案的第二部分是在使用Javascript更改IFrame的
document.location
时设置URL编码 这在HTML上是不可能的。您可以获得的最接近的属性是
的accept字符集。只有MSIE浏览器坚持这一点,但即使如此,它也做得不对(例如,当它说它已发送ISO-8859-1时,实际上使用了CP1252)。其他浏览器完全忽略了它,它们使用响应的内容类型
标题中指定的字符集。设置正确的字符编码基本上完全由服务器端负责。客户端应该将其发送回服务器发送响应时使用的字符集
至此,您应该完全从服务器端配置字符编码。为了克服无法编辑URIEncoding
属性的问题,这里有人编写了一个(复杂的)过滤器:。您可能会发现它也很有用(注意:我还没有测试过它)
更新:
应该注意的是,当内容通过HTTP传输时,问题中给出的元标记被忽略。相反,HTTP响应内容类型
头将用于确定内容类型和字符编码。例如,您可以在网络面板中确定HTTP头
好的,谢谢。我现在似乎明白了。但是如何在服务器端设置字符集呢?我的初始页面是一个带有
的静态html文件,但Web服务器在发送它时,HTTP头中没有字符集信息。您知道关于HTTP和HTML头中的编码信息应该如何协同工作的任何资源吗?为什么我们都需要它们呢?当页面通过HTTP提供服务时,meta标记被忽略(请参阅答案更新)。当使用JSP时,应该将
放在顶部。使用Servlet时,应该执行response.setCharacterEncoding(“UTF-8”)代码>。两者都将在内容类型头中隐式设置正确的字符集。您可能会发现本文很有用:。对于JSP/Servlet解决方案,从.Awesome开始。每天我都能学到这样的东西,这肯定是一个很棒的日子。@BalusC:我发现一个服务器允许用户上传任意内容,但总是设置相同的内容类型。X-Content-type-Options
没有设置,但现代浏览器不再倾向于进行mime类型嗅探。那么有没有办法用ʜ覆盖服务器提供的mime类型ᴛᴍʟ ? (忽略剥离的html属性)charset
属性不是很有用,现在不推荐使用。看这个相关的问题:你链接到的问题实际上与这个问题无关。然而,很明显,是的,我并不是说这两个问题是重复的。