代码页和编码

时间:2008-11-03 04:26:26

标签: encoding codepages

在任何人建议我对此进行谷歌搜索之前,我有。我只需要更清楚一下代码页和编码。

如果我使用UTF8编码,并使用意大利语代码页然后使用法语代码页,这是否意味着即使字节没有改变,也会得到不同的字符?

3 个答案:

答案 0 :(得分:8)

乔尔对此有一个很好的总结:
http://www.joelonsoftware.com/articles/Unicode.html

不。如果我正确理解你的问题,那并不意味着。 当您将UTF-8转换为特定代码页时,可能只会转换某些字符。未转换的内容会发生什么变化取决于您如何调用转换。可能的结果是无法映射到代码页的字符将转换为问号字符。

答案 1 :(得分:5)

编码只是数值和“字符”之间的映射。

US-ASCII将数字65映射到字母A,将32映射到空格,将49映射到数字“1”。 (如何渲染这些东西是另一回事。)事实上,UTF-8也是如此!但是还有其他值,UTF-8对待ASCII的方式不同。它是可变长度编码,即字符可以用1,2,3或4字节编码;常见字符通常消耗较少的字节。

纯文本文件(包括网页)以字节序列的形式存储和传输。这些字节应该代表文本。软件应用程序(如文本编辑器和Web浏览器)负责在屏幕上呈现这些文件中的信息。通常他们使用库或OS功能。

如果软件采用与创建文件的软件不同的编码,则可能会显示错误的字符!

请注意,可以在不同的编码之间进行转换;但是,如果转换为不包含特定字符的编码,则软件必须选择使用什么。这种转换通常是透明的(当您使用特定编码保存文件时,无论您键入什么,都必须更改为该编码)。

答案 2 :(得分:0)

UTF-8包含法语和意大利语代码页中的所有字符,但特定于语言的代码页不包含所有其他字符。

因此,您可以从每种语言中获取输入并将其转换为UTF-8进行存储,但如果您接受意大利语输入并将其显示为法语,则无法确定是否会获得正确的字符。

如果可以的话,一直使用UTF-8。