JavaScript中的国际字符
我正在使用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("æøå"); alert("???"); </script> </head> <body> </body> </html>
我究竟做错了什么?
好的,多亏了Grapefrukts的回答,我才能正常工作。
实际上,我需要它来存储来自MySQL服务器的数据。由于以UTF-8编码保存文件只能解决静态内容的问题,因此我认为我将包括使用PHP从MySQL服务器提取字符串的解决方案:
utf8_encode($ MyStringHere)
解决方案
回答
这对我来说是预期的:
alert("æøå");
...创建一个包含字符串""的警报,而
alert("???");
...使用非ASCII字符创建警报。
Javascript非常utf-8干净,不会阻碍前进。
也许我们将其放在作为ISO-8859-1的Web服务器上?如果我们使用Apache,请在Apache配置文件中(或者在.httaccess中,如果可以覆盖),则应在一行
AddCharset utf-8 .js
(注意:已编辑,以逃离&符...否则,这没有任何意义。)
回答
我第一个得到"",第二个得到一些垃圾字符。可能是javascript没有处理(或者mojibake)字母,但是警报对话框使用系统默认字体,并且该字体无法显示字母吗?
回答
仅在标头中指定UTF-8是不够的。我敢打赌,我们还没有将文件另存为UTF-8. 任何相当高级的文本编辑器都将具有此选项。试试看,我相信它会起作用!
回答
我们也可以使用String.fromCharCode()从数字实体输出字符。
例如String.fromCharCode(8226)将创建一个项目符号字符。
回答
如果我们无法设置响应编码,则可以在JavaScript字符串文字中使用\ u
转义序列来显示这些字符。
alert("\u00e6\u00f8\u00e5")