代码页和字符编码有什么区别?

时间:2010-08-25 20:38:28

标签: .net character-encoding

我的ASP.NET应用程序导入CSV文件。它们大多保存在要求“字符集”的电子表格或记事本中,例如:ISO-8859-2Windows-1210DOS-852Unicode(UTF-8)

Wiki说UTF-8是字符编码,但Windows-1210ISO-8859-2是代码页。这些术语是否可以互换?

.NET读取以UTF-8保存的文件。它是否发现了编码本身?

4 个答案:

答案 0 :(得分:3)

你可能想查看Joel Spolsky的article和这篇文章here

答案 1 :(得分:1)

来自wiki的引言:

代码页是字符编码的另一个名称。它包含一个描述特定语言字符集的值表。”

http://en.wikipedia.org/wiki/Code_page

“Windows代码页是20世纪80年代和90年代在Microsoft Windows系统中使用的字符集或代码页(称为其他操作系统中的字符编码)。”

答案 2 :(得分:1)

我认为这在很大程度上是历史性的,但有一个明显的区别。代码页是查找表,一个特定字节映射到特定字符。不同的代码页使用不同的映射。在过去,那些映射实际上并没有被执行。这要求您还具有字形以匹配代码页的字体。今天仍然是一个问题,控制台窗口有一个代码页。

Unicode编码中没有映射。他们只需要将32位压缩成有效的格式。不同的Unicode编码使用不同的方式来挤压这些位。该字符始终具有固定值(Unicode中的代码点)。

UTF编码的文本文件应该有一个BOM,允许读者自动检测编码。对于使用代码页编码的文本文件,不存在此类约定。从中获取好文本有点像垃圾。这是一个应该已经死亡的邪恶:)

答案 3 :(得分:0)

StreamReader等.NET类默认为UTF-8编码;不,它没有神奇地被发现。