字符编码- win7和win2003服务器显示的ascii值不同



在我们的Visual Basic 6.0程序中,我们使用了函数chr(11)附加一些字符串并显示在文本框中。

在Windows 2003 Server中,文本框中的值显示为"a box(for chr(11))后跟一个string"在windows 7中,文本框中的值显示为"♂(for chr(11)后跟字符串"

有谁能告诉我为什么它会这样吗?

可能是字体的不同。

即使使用相同的"face name",实际安装的字体也可能在支持的字形等方面有所不同。

请注意,您的程序使用的不是任何意义上的ASCII,而是ANSI。从程序中的Unicode到用于显示的ANSI的映射也因Locale和Charset设置而异。字符集也可能是一个因素。

Chr(11)表示"取11并将其视为当前代码页中的ANSI字符,将其转换为Unicode,然后将其作为变体字符串返回。"

Chr$(11)通过返回字符串消除了一些开销,ChrW$(11)甚至更简洁,也跳过了通过ansi到unicode转换的清洗。

更快的方法是对这个字符vbVerticalTab使用命名常量。

但这些都不影响显示。这是一个避免不必要开销的问题。

你依赖的是不可靠的东西,即不可打印的字符总是有字形。您看到的"方框"符号表示该字符没有可用的字形。

即使字符映射小程序也不会显示低于33 (&H21)的值的字形映射。

相关内容

  • 没有找到相关文章

最新更新