扩展字符代码页

Posted

技术标签:

【中文标题】扩展字符代码页【英文标题】:Extended charachter code pages 【发布时间】:2011-05-05 23:47:24 【问题描述】:

我试图验证字符(扩展字符),我发现在各种 PC 中,它们在不同的地方都有扩展字符。我的意思是,对于某个字符(不是拉丁语),我们看不到相同的 ASCII 码。 现在我的问题是当我的程序开始总是使用某个 ASCII 码表时我必须做什么? 当然对于扩展字符。

【问题讨论】:

我不明白你的问题。 .NET 在内部使用 UTF-16,所以我看不出 ASCII 与事物有什么关系。你能解释一下你在做什么,什么不工作并提供代码示例吗? 亲爱的 Oded,非常感谢您对我的问题感兴趣。我想要做的是验证各种文本框中的字符输入。我在办公室的两台电脑(办公室和家里)上工作,我使用扩展字符表 UTF-8(我认为是这样)。但现在在我的办公室里,我看到扩展字符代码在不同的数字(位置)中。所以当这个项目将被填充时,我不知道我的验证功能是否有效。 @Lefteris - 在文本框中应该没有区别;字符串总是 UTF-16。您在哪里确切地看到了不同之处?您能否发布代码来说明您如何看待这个问题? 我用于验证的是:91 到 96、123 到 126、160 到 254、8、32 用于希腊字符验证 @Lefteris - 这是比较 char 的值吗?这应该可以正常工作。 【参考方案1】:

此问题通常仅与读取和写入文本文件有关(因为 .NET 字符串是 UTF-16)。在这种情况下,只需使用Encoding.GetEncoding(codePage) 选择适当的编码,并在访问任何文本文件时使用它。所有标准的内置文本/文件实用程序操作都将采用编码,例如:

string contents = File.ReadAllText("foo.txt", encoding);

【讨论】:

我从不在我的代码中使用 Encoding.GetEncoding(codePage)。我是否可以使用它来在我的项目中始终拥有某个代码页? @Lefteris - 关于文件访问,是的。这不是项目范围的,每次打开文件时都必须指定为文本。 好吧,Marc,我的目标是验证在某些特定文本框中从键盘输入的字符 @Lefteris - 回复希腊代码页,Encoding.GetEncoding(28597)Encoding.GetEncoding("iso-8859-7") 应该适用于此。 @Lefteris - 重新验证;除非您正在与文件等对话,否则没关系 - 在string 中, 没有代码页;字符是相同的。代码页仅确定 bytes(在文件等中)如何映射到代码点;但在内存中你只有有代码点。

以上是关于扩展字符代码页的主要内容,如果未能解决你的问题,请参考以下文章

如何使用扩展和硒打开一个新的标签页?

在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (#1113)

应该使用啥代码页/字符集将来自 MVS 系统的数据解释为 Java 环境?

项目代码设计规范总结之分页查询

win32day02-字符与编码

在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (#1113)