2010-11-16 51 views

回答

6

这一现象在Chr command的文档中定义:

返回的值取决于代码页当前线程,它包含在TextInfo类的ANSICodePage财产在System.Globalization命名空间。您可以通过指定System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage来获取ANSICodePage。

因此,对于大于127的值,Chr的输出与系统有关。如果您想要重现结果,请致电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

你是怎么写这些的?因为通常情况下,当您使用输出流函数时,您可以指定与之一起使用的编码。

编辑:我知道这是不是C#,但可以看到的想法...

你必须设置你的文件流的编码,通过做这样的事情: Setting the encoding when creating the filestream

+0

我在控制台中使用了writeline(chr(Number))。 Textbox.text = chr(数字)为你看到的图片。 – 2010-11-16 14:33:54

2

第一个字符集是代码页437(CP437),第二个字符集看起来像代码页1252(CP1252),也称为Windows Latin-1。

我猜想VB.Net只是简单地为PC提供默认编码。

+1

猜测是准确的,Chr()和Asc()使用默认的系统代码页,在西欧和美洲通常为1252。使用ChrW()和AscW()来处理Unicode。 437是旧的IBM PC代码页,仍然是控制台模式应用程序的默认值。 – 2010-11-16 15:58:17