5

重複の可能性:
VB6 で Unicode テキスト (ヘブライ語など) を表示するための最良のオプションは何ですか?

9646VB6でUnicode文字(BLACK VERTICAL RECTANGLE)を表示する正しい方法は何ですか?

試しChrW(9646)てみると表示されます?

4

3 に答える 3

7

これは、探索するためのチュートリアルです。黒い縦の長方形については、この記事をご覧ください。

Unicode がオンになっていると仮定すると、次の文字列をウィンドウに送信して表示します。

Wchar_t mStr[] = {9646,0,0};

参照。このコード スニペットとリファレンスは、C++ でよりインライン化されています。次の手順を使用して、Visual C++ で UNICODE をオフ/オンにする場所:

  1. VS2008/2010 でプロジェクトを開きます。

  2. ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] をクリックします。

  3. を選択Configuration Properties-> Generalし、 を選択Character Setして に変更current valueUse Multi-Byte Character Setます。(電源を切る)


VB での UNICODE の表示に関する良い記事です

textboxでコントロールを操作している場合は、 を参照ライブラリとしてForm追加します。Microsoft Forms 2.0 Object Libraryこのコンポーネントは、テキストボックス、ラベル、コマンド ボタン、リスト ボックス、コンボ ボックス、チェックボックス、ラジオ ボタン、トグル ボタン、画像、タブストリップ、複数ページ コントロールなどのUnicode 対応コントロールを提供します。

VB6 で作業し、US-ANSI 以外の文字を表示するには、次の 3 つの主な事柄を理解する必要があります。

  • 内部的に、VB6 は文字列を Unicode として格納します。
  • 文字列を表示するとき、標準の VB6 テキスト ボックスとラベル コントロールは、Unicode から ANSI への暗黙的な (および内部的な) 変換を行います。
  • 標準のVB6 テキスト ボックスとラベル コントロールは、指定できる文字エンコーディングに従って ANSI バイトを表示します。

変換後Unicode-to-ANSI、VB6 はコントロールのプロパティに従って文字データを表示しようとしますFont.Charset。このプロパティを変更しない場合は、ANSI 文字セットと同じになります。コントロールをFont.Charset変更すると、VB6 が "ANSI" バイトを解釈する方法が変わります。つまり、バイトを「ANSI」ではなく他の文字エンコーディングとして扱うようにVB6に指示しています。

たとえば、コンピューターでUnicode Japanese文字列を表示しようとすることを検討してください: (日本語の場合) を設定しますが、Unicode 文字列はすべて疑問符文字として表示されます。これは、VB6 が最初に日本語の Unicode 文字列を ANSI (英語のコンピューターの Windows-1252 ) に変換しようとしているためです。日本語の文字は、Windows-1252 では表現できません。各文字は変換に失敗し、疑問符に置き換えられます。たとえば、TextBox コントロールのプロパティ設定で日本語スクリプトを選択することは、実行時に Font.Charset を設定することと同じです。EnglishFont.Charset = 128

Jukka が言っ たようFontに、フォント内で文字を使用できることを考えると、UNICODE を示す重要な役割を果たします。ハンスが言ったように、glyphサポートされていないフォントは長方形を生成します。したがって、Font選択した がグリフをレンダリングできることを確認する必要があります。たとえば、MS Sans Serifフォントがレンダリングされない場合ƒ(LATIN SMALL LETTER F WITH HOOK、2 バイトの Unicode 値は 0x0192)、その場所に薄い実線の長方形のボックスが表示されます。ただし、Windows では、中国語を表すのに十分な文字レパートリーを持つフォントはほとんどありません。

次のコードでは、実行時に Font CharSet に沿って Font Name () が設定されます。

文字セットのプロパティ:

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 での出力: VB6 形式でも試すことができます。

ここに画像の説明を入力

上記のすべての書き込みの後、私はこのMSDNの記事に気付きました。少なくともそれはVBの確認です:D

于 2012-12-29T11:35:33.547 に答える
1

必要なのは、「Unicode 対応」コントロールを使用することです。VB6 にはこれらのうちのいくつかしか付属していませんでしたが、Vista 以降または XP (このライブラリの非 Ink redist バージョンを使用しない限り、Tablet Edition のみ) では、InkEdit コントロールでこれを行うことができます。

InkEdit1.Text = ChrW$(9646)

$が埋め込まれた Variant の代わりに String を返す関数を示すことに注意してください。

InkEdit コントロールは、実際には、インク入力とインク対応システムでの入力をサポートする拡張された RichTextBox です。これは Unicode コントロールでもあり、 などの Unicode プロパティをサポートします.Text

標準の MSHFlexGrid、DataGrid、およびその他のいくつかのコントロールも Unicode 対応です。

問題のような文字については、 http://www.alanwood.net/unicode/geometric_shapes.htmlを参照してください。基本的に、ANSI、Charset などに関するジバージャバーは無視できます。関連性はありますが、ここでは適用できません。

▮ 9646 ▮ 25AE BLACK VERTICAL RECTANGLE

于 2012-12-30T10:04:22.367 に答える
0

疑問符が表示される理由は、使用されているフォントにその文字が存在しないためです。Arial Unicode MS や Lucida Sans Unicode など、BLACK VERTICAL RECTANGLE をサポートするフォントにフォントを設定する必要があります。

于 2012-12-29T10:52:25.463 に答える