【问题标题】: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 的值吗?这应该可以正常工作。

标签: windows vb.net visual-studio-2010 windows-xp .net-4.0


【解决方案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(在文件等中)如何映射到代码点;但在内存中你只有有代码点。
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
相关资源
最近更新 更多