0

非ユニコード ビルドで wxMac 2.8 を使用しています。変化した母音 "ü" を含むファイルを wxtextctrl に読み込もうとしています。すると、データは現在のエンコーディングとして解釈されますが、それはマルチバイト文字列です。問題を次のように絞り込みました。

text_ctrl->Clear();
text_ctrl->SetValue("üüüäääööößßß");

結果は次のとおりです。

üüüäääööößßß</p>

文字数が 2 倍になっていることに注意してください。gdb で文字列を出力すると、元の文字ごとに「\303\274」などと表示されます。textctrl に「ü」などを入力しても問題ありません。さまざまな wxMBConv メソッドを試しましたが、結果は常に同じです。これを解決する方法はありますか?

よろしくお願いします、

4

2 に答える 2

0

テキスト エディター (プログラムのソース コード用) は、実行中のプログラムとは異なるエンコードになっているようです。

たとえば、テキスト入力コントロールと残りのプログラムが (正しく) UTF-8 を使用しているとします。テキスト エディタが他のエンコーディングを使用している場合、画面上では正常に見える文字列に実際にはガベージ バイトが含まれます。

ピュア UTF8 ワールドの作成を支援できる立場にあると仮定すると、次のことを行う必要があります。

1) "\303" や "\xc3" などのエスケープを使用して、UTF-8 を文字列リテラルに直接エンコードします。これを行うのは面倒ですが、テキスト エディター (または他の開発者のエディター設定) について心配する必要がないということです。

2) 次に、プログラムがどこでも UTF-8 を使用していることを確認します。

于 2013-05-12T10:57:36.050 に答える
0

7 ビット ASCII 以外を使用する場合は、wxWidgets の Unicode ビルドを使用する必要があります。自分で好きなことをして、それに切り替えてください。wxWidgets 2.8 以前の "ANSI" ビルド用に書かれた既存のコードが多すぎて、Unicode ビルドでコンパイルできない場合は、代わりに wxWidgets 2.9 を使用してコンパイルしてください。意図したとおりに動作します。

于 2013-05-12T12:38:06.303 に答える