我想输出ASCII字符131(ƒ - 带钩子的拉丁小写字母f)到一个消息框,但由于某种奇怪的原因,它显示为空字符串。我有以下VB.NET代码:为什么这个ASCII字符输出为空字符串(VB.NET)?
Dim str As String = Convert.ToChar(131)
MessageBox.Show(str, "test", MessageBoxButtons.OK, MessageBoxIcon.Information)
Debug.Print(str)
在上面,但Debug.Print语句显示在“立即窗口”正确的字符消息框不显示任何内容。我有大约70个其他ascii字符,这些方法都可以很好地工作,但只有少数显示为空白(131和EN短划线150)。
例如,下面的工作:
str = Convert.ToChar(164)
MessageBox.Show(str, "test", MessageBoxButtons.OK, MessageBoxIcon.Information)
Debug.Print(str)
我也试图转换为UTF-8,但我得到了相同的行为在第一个代码段:
Dim utf8Encoding As New System.Text.UTF8Encoding(True)
Dim encodedString() As Byte
str = Convert.ToChar(131)
encodedString = utf8Encoding.GetBytes(str)
Dim str2 As String = utf8Encoding.GetString(encodedString)
MessageBox.Show(str2, "test", MessageBoxButtons.OK, MessageBoxIcon.Information)
Debug.Print(str2)
这是一个编码的问题?感谢您的任何见解。
编辑:只是为了澄清,我实际上并没有试图将该字符输出到消息框。该代码只是一个测试。我试图将字符作为字符串传递给在第三方XML编辑器控件中使用它的函数,但它显示为空白。即使在Visual Studio中进行调试时,也可以看到它的值等于“”。
编辑2:感谢来自下面接受的答案的一些调查,我发现我使用了错误的Unicode字符。对于这个f字符,使用的代码是ToChar(402)。这工作完美。谢谢你们。
字符”ƒ“不是Ascii字符。这可能或可能不相关。此字符在不同的字符代码中具有不同的代码号。 – 2013-03-05 17:13:00
在vb.net(MS Sans Serif)中查看默认字体时,我看不到那个符号,粘贴到记事本中,然后更改为Sans Serif这个符号显示为一个奇怪的字符,它可能是字体问题吗? – bendataclear 2013-03-05 17:22:06
MessageBox使用默认的系统字体。如果该字符不在默认系统字体中,那么您将看不到该字符。你可以推出你自己的MessageBox,或者看看[Extended Message Box Library](http://www.news2news.com/vfp/?solution=5),它看起来像它允许你改变字体(以及其他的东西)在标准的MessageBox上。 – codechurn 2013-03-05 17:36:42