テキストが疑問符として表示されるとはどういう意味ですか?
質問
(たとえば)Windows GDIを使用してプログラムにテキストを表示しようとしていますが、Unicode文字の一部が疑問符として表示されていますか?どうした?
解決
Windowsには、Unicode文字を表示しようとしたときに発生する一般的な表示の問題が2つあります。
-
テキストが疑問符として表示されることがある
- これは、通常システムコードページを介してUnicodeデータが8ビット文字セットエンコーディング(または技術的にはマルチバイト文字)に変換されるときに発生します(ただし、変換呼び出しで他のコードページを指定できます)。ターゲット8ビット文字セットに必要な文字が含まれていない場合、ターゲット文字セットで表現できない文字は疑問符に変換されます。
-
テキストがボックスとして表示されることがある
- これは、特定の文字のglpyhがないフォントの問題です。ドキュメント内のUnicode文字とフォントでサポートされている文字との間に不一致がある場合、ボックスが表示されます。具体的には、ボックスは選択したフォントでサポートされていない文字を表します。
他のヒント
それは、UnicodeテキストがどこかでANSIテキストに変換されることを意味します。 Latin-1以外のUnicode文字はANSIに変換できないため、疑問符に変換されます。さまざまなWindows関数の適切なUnicodeバージョンを常に呼び出すように、プログラムがUnicodeサポートをオンにしてコンパイルされていることを確認してください(つまり、プリプロセッサシンボルUNICODEおよび_UNICODEはプロジェクトによって#defineされています)。
基本的に、テキストが破損しています。あるエンコーディングでUnicodeテキストを取得し、ターゲットエンコーディングにソーステキストのすべての文字が含まれていることを確認せずに、別のエンコーディングに変換しました。そうすることで、あなたはたくさんの意味不明な言葉を持っています。
これを行う方法は次のとおりです。
- UTF-8テキストをANSIとして処理する(最初に有効なコードページに変換せずに)
- コードページに正しい文字が含まれているかどうかを確認せずに、Unicodeテキストをコードページに変換します。
所属していません StackOverflow