我想輸出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