HAL*_*000 19 html urlencode character-encoding special-characters
我有一个带有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>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,我没有让浏览器包含Content-Type: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中测试)
所需解决方案的第二部分是在document.location
使用Javascript 更改IFrame时设置URL编码.
Bal*_*usC 20
这不可能来自HTML.你能得到的最接近的是accept-charset
属性<form>
.只有MSIE浏览器遵守这一点,但即便如此,它也是错误的(例如CP1252 实际上在它说它已发送ISO-8859-1时使用).其他浏览器完全忽略它,并且它们正在使用Content-Type
响应标头中指定的字符集.正确设置字符编码基本上完全是服务器端的责任.客户端应该在服务器发送响应的同一个字符集中将其发回.
到目前为止,您应该完全从服务器端配置字符编码内容.为了克服无法编辑URIEncoding
属性,SO上的某人写了一个(复杂的)过滤器:在Tomcat中自动检测URI编码.您可能会发现它也很有用(注意:我还没有测试过).
更新:注意到,当内容通过HTTP传输时,您的问题中给出的元标记将被忽略.相反,HTTP响应Content-Type
头将用于确定内容类型和字符编码.您可以在Net面板中使用例如Firebug确定HTTP标头.