我正在尝试将 ASCII 字符 131(ƒ - 带钩子的拉丁小写字母 f)输出到消息框,但由于某些奇怪的原因,它显示为空字符串。我有以下 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)
我也尝试转换为 UTF8,但我得到了与第一个代码片段相同的行为:
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)
这是编码问题吗?感谢您的任何见解。
编辑:澄清一下,我实际上并没有尝试将字符输出到消息框。该代码只是一个测试。我试图将字符作为字符串传递给在第 3 方 xml 编辑器控件中使用它的函数,但它显示为空白。即使在 Visual Studio 中调试时,您也可以看到它的值等于“”。
编辑 2:感谢下面接受的答案的一些调查,我发现我使用了错误的 unicode 字符。对于这个 f 字符,要使用的代码是 ToChar(402)。这非常有效。谢谢你们。