根据MSDN vb.net uses this extended character set。根据我的经验,它实际上使用了这个:
答案 0 :(得分:6)
此行为在Chr
command:
返回值取决于当前线程的代码页,该代码页包含在System.Globalization命名空间中TextInfo类的ANSICodePage属性中。您可以通过指定System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage来获取ANSICodePage。
因此,Chr
的值大于127的输出取决于系统。如果您想要可重现的结果,请致电Encoding.GetEncoding(String)创建所需的Encoding
实例,然后使用Encoding.GetChars(Byte())将您的数值转换为字符。
如果您在问题中链接的图表中go up one level,您会发现他们并未声称此图表始终是Chr
命令的输出:
Windows 127中出现的字符取决于所选的字体。
本节中的图表显示了控制台应用程序的默认字符集。
您的应用程序是WinForm应用程序,而不是控制台应用程序。即使在控制台中,也可以更改使用的字符集(例如,使用chcp
命令),因此单词“default”。
有关.net中使用的编码的详细信息,我建议使用以下MSDN文章:Character Encoding in the .NET Framework。
答案 1 :(得分:2)
第一个字符集是Code Page 437(CP437),第二个字符集就像Code Page 1252(CP1252),也称为Windows Latin-1。
我猜VB.Net只是简单地选择PC的默认编码。
答案 2 :(得分:1)
你是怎么写这一切的?因为通常,当您使用输出流功能时,您可以指定随之而来的编码。
编辑:我知道这不是C#,但你可以看到这个想法......
您必须通过执行以下操作来设置文件流的编码: Setting the encoding when creating the filestream