我打印了一些UTF-16编码的字符并尝试在Firefox中显示它并将其显示为 。
所以我去了Tools->编码并将编码从UTF-8更改为UTF-16(我也尝试直接在HTML中更改字符集)但是,当我这样做时,我的页面完全充满了符号:
π佄呃偙⁅瑨汭ാ㰊瑨汭ാഊ㰊敨摡ാ†ഠ†㰠楴汴㹥楬畮⁸楆敲潦⁸楤灳慬獹朠牡慢敧挠慨慲琐牥湩氠敩⁵景眠扥潆条畓汴††氼捩捩捩捩捩•汤牨晥∽⼺⼺湤湤湤瑳瑳瑡渮瑥瑥瑥灵牥猎牥椯杭是痴捩汤椮潣㸢††氼湩敲㵬愢灰敬琭畯档椭潣≮栠敲㵦柏瑴㩰⼯摣獳慑楴敮...... ......
Web浏览器如何在不破坏页面的情况下显示UTF-16字符?
答案 0 :(得分:5)
“淹没符号”摘录看起来像是一个UTF-8编码的HTML文档,但被视为UTF-16编码。或者它可能包含大多数UTF-8数据,其中包含一些UTF-16编码数据,这些数据无效。
如果您将数据保存为正确的UTF-16编码并在HTTP标头和/或meta
标签中声明编码,则某些浏览器会将其显示为OK,有些则不会。搜索引擎通常无法处理UTF-16,并且UTF-16大多不使用,不应在网络上使用,除非同意明智的合作伙伴之间达成共识。
答案 1 :(得分:1)
Firefox无法在您的文档中找到正确的字符集。 对于网页,应使用头元标记来指示内容的字符集。 它应该放在HTML文件的开头,指示浏览器应该为文件的其余部分使用哪个字符集。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
所以浏览器是charset blind,直到它读取该行。但使用utf-8是没问题的。因为到目前为止的每个字符都以utf-8编码,与ASCII格式相同(latin-1和其他字符相同)。在utf-16中情况并非如此。
有三种不同的Unicode字符编码:UTF-8,UTF-16 和UTF-32。在这三个中,只有UTF-8应该用于Web内容。
所以你应该使用utf-8。但是,如果您仍想尝试使用utf-16,请在文件的乞讨中使用BOM。您将为浏览器提供一个更好的机会来确定并正确decode内容。
This other answer对utf-16的使用非常简洁。
虽然Joel gives a full lesson on character encoding以及为什么HTML在内容中使用它而不是标题信息。
答案 2 :(得分:0)
使这项工作的方法是让页面说明它的编码。对于UTF-16,它也有助于包含BOM。 “充满中国人”的效果很可能是因为你的页面是UTF-16LE,但浏览器将其视为UTF-16BE,反之亦然...
答案 3 :(得分:0)
将UTF-16数据作为网页发送到浏览器是旧浏览器中的XSS风险。 (见另一个answer。)不要这样做。相反,将数据转换为服务器上的UTF-8并通过HTTP发送UTF-8。