我的ASP.NET应用程序导入CSV文件。它们大多保存在要求“字符集”的电子表格或记事本中,例如:ISO-8859-2
,Windows-1210
,DOS-852
或Unicode(UTF-8)
。
Wiki说UTF-8
是字符编码,但Windows-1210
和ISO-8859-2
是代码页。这些术语是否可以互换?
.NET读取以UTF-8保存的文件。它是否发现了编码本身?
答案 0 :(得分:3)
答案 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编码;不,它没有神奇地被发现。