【发布时间】:2012-11-01 15:08:42
【问题描述】:
我在 XHTML 网页中有 Javascript,它正在传递 UTF-8 编码的字符串。它需要继续通过 UTF-8 版本,并对其进行解码。如何解码 UTF-8 字符串进行显示?
<script type="text/javascript">
// <![CDATA[
function updateUser(usernameSent){
var usernameReceived = usernameSent; // Current value: Größe
var usernameDecoded = usernameReceived; // Decode to: Größe
var html2id = '';
html2id += 'Encoded: ' + usernameReceived + '<br />Decoded: ' + usernameDecoded;
document.getElementById('userId').innerHTML = html2id;
}
// ]]>
</script>
【问题讨论】:
-
这不是你用 JavaScript 来解决的问题。解决它的方法是添加一个适当的
meta标记,如<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />和XML 声明,如<?xml version="1.0" encoding="UTF-8"?>。 -
什么? 只要你的网页是 UTF-8 编码的,js 就会把字符串当作 UTF-8 编码,
encodeURIComponent()和decodeURIComponent()会假设数据为 UTF-8 编码。 -
"Größe" 不是 UTF-8(嗯,它可能是,但本质上不是),它是一个 混乱。它已经坏了。好几次,显然。它不需要“解码”,只要它出现故障和损坏都需要修复。提供更多的上下文信息,否则很难提供帮助。
-
不要随意申请
utf8_encode。你需要它吗?你知道你为什么需要它吗? -
“用户尝试使用它”中的“它”是指UTF-8?那么你不需要
utf8_encode。不必要。utf8_encode将字符串的编码从 ISO 8859-1 转换为 UTF-8。即使字符串已经是 UTF-8,它也会尝试这样做。 UTF-8“Größe”→utf8_encode→“GröÃe”→utf8_encode“GröÃÂe”。如果你在不需要它的时候使用它,你的琴弦就会搞砸。
标签: javascript unicode utf8-decode xhtml-transitional