字符集charset=unicode 是指UTF-8,UTF-16还是其他格式?

3

当遇到以下Content-Type的HTML文档时:

text/html; charset=unicode

这句话应该怎样理解?

我目前在Java中使用charset的值作为InputReader构造器的第二个参数,例如:

inputStreamReader = new InputStreamReader(inputStream, charset);

这似乎将文档读取为UTF-16编码,这是否正确?我无法找到有关字符集名称“unicode”的任何文档以了解正确的内容。

它是否会抛出运行时异常?你的浏览器如何处理它? - Sotirios Delimanolis
1
在Mac 2011版的Microsoft Word中,当你选择保存为HTML时,会得到一个以UTF-16LE编码的文件,其中包含<meta http-equiv=Content-Type content="text/html; charset=unicode">。因此,Microsoft Word可能是你正在处理的HTML文件的起源。我认为"unicode"意味着UTF-16LE,尽管如果我将HTML文件转换为UTF-8并保留Content-Type不变,它仍然可以正常打开。 - Simon Kissane
3个回答

5

1
在实践中,即使是网络浏览器也会以不正确的字符集“unicode”进行不同的处理:Chrome和IE暗示UTF-8,Firefox则暗示windows-1252(可能会有所不同)。通常没有使用UTF-16(更不用说UTF-7)来编写HTML文档的好理由,因此很可能“unicode”意味着UTF-8。 - Jukka K. Korpela
1
微软的.NET框架将unicode视为UTF-16LE的别名。 - dan04

1

实际上,当你将Microsoft Word导出为HTML格式并查看其生成内容时,它实际上会生成:

<meta http-equiv=Content-Type content="text/html; charset=unicode">

我发现这个原因是因为我需要生成的HTML将在Word中打开并以荷兰语正确显示,在我使用以下代码时:

<meta http-equiv=Content-Type content="text/html; charset=utf-8">

MS Word打开文档时会显示不正确的字符(ë会显示为奇怪的中文符号),但当我将HTML中的“utf-8”改为“unicode”时,MS Word打开我的HTML并显示了正确的荷兰字符。那么MS Word又做错了什么吗?我不知道,但这是我必须输出的内容才能让它正常工作。

0

Unicode是一个适用于所有(小于2^24)字符的编号标准,有几种字节格式:UTF-8(可变长度多字节)、UTF-16LE或UTF-16BE(2个字节的序列)甚至还有其他格式。

你所看到的是错误的。


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