【发布时间】:2012-11-06 09:42:01
【问题描述】:
我想编写一种方法来将特殊字符(如 'ä')转义为响应的 Unicode(例如 \u00e4)。
出于某种原因,JS 发现在内部甚至不保存 'ä' 而是使用 'üÜ' 或其他一些乱码很有趣,所以当我转换它时会吐出 '\u00c3\u00b6\u00c3\u002013' 因为它转换了这些字符而不是 'ä'。
我尝试将 HTML 文件的编码设置为 utf-8,并尝试使用 charset="UTF-8" 加载脚本,但无济于事。该代码并没有真正做任何特别的事情,但它是:
String.prototype.replaceWithUtf8 = function() {
var str_newString = '';
var str_procString = this;
for (var i = 0; i < str_procString.length; i++) {
if (str_procString.charCodeAt(i) > 126) {
var hex_uniCode = '\\u00' + str_procString.charCodeAt(i).toString(16);
console.log(hex_uniCode + " (" + str_procString.charAt(i) + ")");
str_newString += hex_uniCode;
} else {
str_newString += str_procString.charAt(i);
}
}
return str_newString;
}
var str_item = "Lärm, Lichter, Lücken, Löcher."
console.log(str_item); // Lärm, Lichter, Lücken, Löcher.
console.log(str_item.replaceWithUtf8()); //L\u00c3\u00a4rm, Lichter, L\u00c3\u00bccken, L\u00c3\u00b6cher.
【问题讨论】:
-
这似乎工作正常 (jsfiddle.net/4HmgN)。您是如何在 HTML 上设置编码的?
-
嘿@mihai,我在head-tag中这样设置:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -
@mihai 等脚本标签:
<script type="text/javascript" charset="UTF-8" src="script/utf8.js"></script> -
听起来不错...我在 Chrome/WinXP 中仍然得到正确的结果
-
@mihai 感谢您的尝试。我觉得被技术控制了;D
标签: javascript encoding utf-8