代码页和编码

3

在有人建议我在谷歌上搜索这个问题之前,我已经这样做了。我只需要更清楚地了解代码页和编码。

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

3个回答

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

如果我正确理解您的问题,答案是否定的。当您将UTF-8转换为特定的代码页时,只有一些字符会被转换。不能转换的字符会根据调用转换的方式而定。可能的结果是无法映射到代码页的字符将被转换为问号字符。

5
一个编码简单来说就是数字值和“字符”之间的映射关系。
US-ASCII将数字65映射为字母A,32映射为空格,49映射为数字“1”。(如何呈现这些内容另当别论。)实际上,UTF-8也是一样!但是UTF-8将其他值与ASCII不同地处理。它是一种可变长度编码,即一个字符可以用1、2、3或4个字节进行编码;常见字符通常占用较少的字节。
纯文本文件,包括网页,都是以字节序列的形式存储和传输的。这些字节应该代表某些文本内容。软件应用程序(如文本编辑器和Web浏览器)负责在屏幕上呈现这些文件中的信息。通常,它们会使用库或操作系统函数。
如果软件假定与创建文件的软件不同的编码,则可能显示错误的字符!
请注意,可以在不同的编码之间进行转换;但是,如果您转换为不包含某个字符的编码,则软件必须选择使用什么替代字符。这种转换通常是透明的(当您使用特定编码保存文件时,您键入的任何内容都必须更改为该编码)。

0

UTF-8 包含了你的法语和意大利语代码页中的所有字符,但是特定于语言的代码页并不包含彼此所有的字符。

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

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


为什么这个被踩了?虽然问题表达得不太清楚,但是这个答案在我看来是正确的。 - Alan Moore

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