在Javascript中使用国际字符

15

我正在开发一个Web应用程序,其中我使用XML将数据从服务器传输到浏览器。

由于我是丹麦人,因此在处理字符æøå时很快遇到问题。

我知道在HTML中,我可以使用"æøå"代替æøå

但是,一旦这些字符通过JavaScript传递,当使用æøå时,我得到带有"?"的黑色方块,而"æøå"则原封不动地打印出来。

我已经确保将其设置为UTF-8,但并没有什么帮助。

理想情况下,我希望它能与任何特殊字符(自然而然)配合使用。

以下是未能正常工作的示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
        <script type="text/javascript" charset="utf-8">
            alert("&aelig;&oslash;&aring;");
            alert("æøå");

        </script>
    </head>
    <body>
    </body>
</html>

我做错了什么?


好的,感谢Grapefrukts的回答,我解决了问题。

实际上,我需要处理来自MySQL服务器的数据。由于将文件保存为UTF-8编码只能解决静态内容的问题,所以我想包括用PHP提取的来自MySQL服务器的字符串的解决方案:

utf8_encode($MyStringHere)

7个回答

24

如果你不能设置响应编码,你可以在JavaScript字符串文字中使用\u转义序列来显示这些字符。

alert("\u00e6\u00f8\u00e5")

12

仅在头部指定UTF-8是不够的。我敢打赌你没有将文件保存为UTF-8编码。任何一款相对高级的文本编辑器都会有此选项。尝试这样做,我相信它会有效!


7

您也可以使用String.fromCharCode()来将数字实体输出为字符。

例如,String.fromCharCode( 8226 )将创建一个圆点符号。


1
我使用这样的代码来处理泰语,一切正常。 $message 是我的 PHP 变量。
echo("<html><head><meta charset='utf-8'></head><body><script type='text/javascript'>alert('" . $message . "');</script></body></html>");

希望这能有所帮助。谢谢。
(由于系统提示“我的声望不够”,我不能发布我所做的图片,因此我在这里留下链接 http://goo.gl/9P3DtI。对此给您带来的不便表示抱歉。)
很抱歉我的英语不好。

1

我得到了"&aelig;&oslash;&aring;"的结果,而对于下一个则是一些垃圾字符。这可能是因为JavaScript没有混淆(或乱码)您的字母,而是警告对话框使用系统默认字体,而该字体无法显示这些字母?


0

这对我来说正常工作:

alert("&aelig;&oslash;&aring;");

...创建一个包含字符串"&aelig;&oslash;&aring;"的警告

alert("æøå");

...使用非ASCII字符创建警报。

Javascript非常干净,不会给你带来障碍。

也许您正在将其放在将其作为ISO-8859-1提供的Web服务器上?如果您使用Apache,在您的Apache配置文件中(或者如果您可以覆盖,则在.httaccess中),您应该有一行

AddCharset utf-8 .js

(注意:已编辑以转义和号...否则就没有意义了。)


0

alert()方法无法解码通过AJAX请求发送的UTF-8编码字符,至少在网页使用非UTF-8编码(如ISO-8859-1)时是这样。

解决方法(使用jQuery):

var msg = 'This is a bull &bull; and this is a star &#9733;';
var msgu = $('<span/>').html(msg).text();
alert(msgu);    

这适用于浏览器可以显示的所有&xxx字符,因为innerHTML()方法(或jQuery的html())创建一个UTF-8有效字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接