如何解决这个字符编码问题?

时间:2011-07-07 12:34:12

标签: javascript html encoding character-encoding cjk

发送页面如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script>
function send() {
    var chinese = document.getElementById('chinese').value;
    window.location = 'receive.html?' + chinese;
}
</script>
</head>
<body>
    <input id="chinese" type="text" name="chinese" value="" />
    <button onclick="send()">Submit</button>
</body>
</html>

接收页面如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script>
window.onload = function () {
    var chinese = location.search;
    document.getElementById('chinese').value = chinese;
}
</script>
</head>
<body>
    <input id="chinese" type="text" name="chinese" value="" />
</body>
</html>

问题是接收页面没有正确接收/显示中文字符。例如,它显示首页而不是?%E9%A6%96%E9%A1%B5,但它在浏览器地址栏的查询字符串中显示良好。

1 个答案:

答案 0 :(得分:1)

在形成URL之前,应该对URI进行URI编码:

window.location = 'receive.html?' + encodeURIComponent(chinese);

现在可能不是所有你必须这样做,因为服务器可能会导致问题,但你通常想要直接从文本字段提供输入来进行编码。