在HTML中将unicode符号代码转换为utf-8的Javascript函数

时间:2015-05-07 16:08:05

标签: javascript html unicode utf-8

我按照How to convert javascript unicode notation code to utf-8?链接在我的控制台中运行该功能。

function encode_utf8( s ){return unescape( encodeURIComponent( s ) );}( '\u4e0a\u6d77' )

然后我得到:

"上海"

然而,当我这样做时:

foo = function(s){return unescape( encodeURIComponent( s ) );}
foo('\u4e0a\u6d77');
foo("\u4e0a\u6d77");

然后我得到"ä¸æµ·" "ä¸æµ·"

该功能有什么问题?谢谢。

编辑:   我感谢你们的解释。现在我发现你只需要在Chrome控制台'\u4e0a\u6d77'中直接输入,然后我就会得到“上海”。   然而,我最初的问题是我想在untml程序中将unicode代码转换为utf-8,而不是在控制台中。我找不到答案。

编辑:   我再次感谢你们。   现在我发现我的问题是我从txt文件中获得了类似'\\ u4e0a \\ u6d77'的字符串。 (注意这里有两个反斜杠)。如何将其更改为'\ u4e0a \ u6d77'(我想摆脱一个反斜杠)。   现在我知道一旦你得到'\ u4e0a \ u6d77'(只有一个反斜杠)然后HTML会自动显示为“上海”

编辑:   现在我找到了解决方案:HERE

1 个答案:

答案 0 :(得分:2)

您的第一个是函数声明,后面是包含字符串文字的括号中不相关的表达式。永远不会调用该函数。控制台中最终结果是parens中表达式的值,即字符串'\u4e0a\u6d77'的值,当然是"上海"

你的第二个首先创建函数(通过函数表达式),然后调用它(由于某种原因两次),传入该字符串,并显示函数的返回值。

所以你看到了不同之处,因为在第一种情况下,你永远不会调用该函数,只需返回你提供的相同字符串即可。在第二种情况下,您实际调用该函数并返回UTF-8数据。