可能重複:
What’s the best option to display Unicode text (hebrew, etc.) in VB6如何在VB6中顯示Unicode字符?
什麼是顯示Unicode字符9646
(BLACK豎長方形)在VB6的正確方法是什麼?
當我嘗試ChrW(9646)
它顯示?
。
可能重複:
What’s the best option to display Unicode text (hebrew, etc.) in VB6如何在VB6中顯示Unicode字符?
什麼是顯示Unicode字符9646
(BLACK豎長方形)在VB6的正確方法是什麼?
當我嘗試ChrW(9646)
它顯示?
。
顯示問號的原因是該字符不存在於正在使用的字體中。您需要將字體設置爲one that supports BLACK VERTICAL RECTANGLE,例如Arial Unicode MS或Lucida Sans Unicode。
缺失的字形會生成一個矩形,而不是問號。 –
這是一個tutorial探索。看看這篇文章的black vertical rectangle。
假設的Unicode被接通時,發送以下字符串的窗口顯示:
Wchar_t mStr[] = {9646,0,0};
Reference。此代碼片段和引用更多地使用C++內聯。在這裏您將開啓/關閉在Visual C++ UNICODE使用以下步驟:
打開您VS2008/2010項目;
右鍵單擊解決方案資源管理器中的項目,然後單擊屬性;
選擇Configuration Properties-> General
,選擇Character Set
並更改current value
到Use Multi-Byte Character Set
。 (關閉)
好文章aboubt displaying UNICODE in VB。
當您在Form
中使用textbox
控件時,請將Microsoft Forms 2.0 Object Library
添加爲參考庫。該組件提供了Unicode支持的控件,例如:文本框,標籤,命令按鈕,列表框,組合框,複選框,單選按鈕,切換按鈕,圖像,tabstrip和多頁面控件。
用VB6的工作和顯示非美國ANSI字符需要3個主要的事情要明白:
Unicode-to-ANSI
的轉換之後,VB6然後嘗試根據控制的Font.Charset
屬性,其中,如果保持不變等於ANSI字符集來顯示字符數據。更改控件的Font.Charset
將更改VB6解釋「ANSI」字節的方式。換句話說,你告訴VB6將字節視爲一些其他字符編碼而不是「ANSI」。
例如,考慮嘗試在English
計算機上顯示Unicode Japanese
字符串:您設置Font.Charset = 128
(對於日語),但您的Unicode字符串顯示爲所有問號字符。這是因爲VB6首先將日文Unicode字符串轉換爲ANSI,即英文電腦的Windows-1252。日語字符在Windows-1252中不可表示。每個字符都無法轉換並被替換爲問號。例如在TextBox控件的屬性設置中選擇日語腳本與在運行時設置Font.Charset相同。
正如尤卡說Font
播放顯示統一碼至關重要的作用給予了字體中的字符的可用性。正如漢斯所說,glyph
不受支持的字體會產生一個矩形。所以你需要確保你選擇的Font
有能力呈現字形。對於例如MS Sans Serif
字體不呈現ƒ
(拉丁字母小寫字母H,2字節Unicode值爲0x0192),所以你會看到一個薄實體矩形框在它的位置。但是在Windows上,有一個足夠寬的字符集來表示中國)極少數的字體..
在下面的代碼的字體名稱(沿字體字符集運行時間期間設置
字符集性能:
134 Simplified Chinese, gb2312 - Mainland China(PRC) and Singapore
136 Traditional Chinese, big5 - Taiwan and Hong Kong
代碼:
Sub changeToUniCodes()
Dim strTxt2 As String
UserForm1.TextBox2.Font.Charset = 134 '--CHINESESIMPLIFIED_CHARSET
UserForm1.TextBox2.Font.Name = ChrW(&H5B8B) + ChrW(&H4F53) '-- 宋體 SimSun font
UserForm1.TextBox2.Text = ChrW(37446)
strTxt2 = UserForm1.TextBox2.Text
'notice that ChrW(9246) produces a different character in Chinese
UserForm1.TextBox2.Text = strTxt2 & " " & ChrW(9246)
End Sub
輸出在VBE IDE:你可以給它以V一試B6形式。
上述所有文字後,我發現這個MSDN文章。至少這是VB確認:D
你需要的是使用「Unicode意識」控制。 VB6只帶有其中的一些,但在Vista和更高版本或XP(僅適用於Tablet Edition,除非使用該庫的非Ink redist版本),InkEdit控件可以執行此操作。
InkEdit1.Text = ChrW$(9646)
注意它表示一個函數返回字符串,而不是一個變體與一個嵌入了$
。
InkEdit控件實際上是一個增強的RichTextBox,它支持墨水輸入以及在支持墨水的系統上輸入。它也是一個Unicode控件,並且支持Unicode屬性,如.Text
。
標準的MSHFlexGrid,DataGrid和其他一些控件也支持Unicode。
請參閱http://www.alanwood.net/unicode/geometric_shapes.html查看相關字符。你基本上可以忽略關於ANSI,字符集等的jibber-jabber。它在這裏是相關但不適用的。
▮ 9646 ▮ 25AE BLACK VERTICAL RECTANGLE
問號是編碼的問題,你會得到他們當Unicode字符串轉換爲ANSI。發佈代碼片段。 –
@ CJ7有很多*黑色的垂直矩形* ..所以最重要的是你想要做什麼**語言**這個'Unicode' *雜耍*?根據選擇的語言,你可以設置你的'Font.Charset'和'Font.Name'屬性。 – bonCodigo