テキストが疑問符として表示されるとはどういう意味ですか?

StackOverflow https://stackoverflow.com/questions/217237

  •  03-07-2019
  •  | 
  •  

質問

(たとえば)Windows GDIを使用してプログラムにテキストを表示しようとしていますが、Unicode文字の一部が疑問符として表示されていますか?どうした?

参照:それはどういう意味ですかテキストがボックスとして表示されるのはいつですか?

役に立ちましたか?

解決

Windowsには、Unicode文字を表示しようとしたときに発生する一般的な表示の問題が2つあります。

  1. テキストが疑問符として表示されることがある

    • これは、通常システムコードページを介してUnicodeデータが8ビット文字セットエンコーディング(または技術的にはマルチバイト文字)に変換されるときに発生します(ただし、変換呼び出しで他のコードページを指定できます)。ターゲット8ビット文字セットに必要な文字が含まれていない場合、ターゲット文字セットで表現できない文字は疑問符に変換されます。
  2. テキストがボックスとして表示されることがある

    • これは、特定の文字のglpyhがないフォントの問題です。ドキュメント内のUnicode文字とフォントでサポートされている文字との間に不一致がある場合、ボックスが表示されます。具体的には、ボックスは選択したフォントでサポートされていない文字を表します。

他のヒント

それは、UnicodeテキストがどこかでANSIテキストに変換されることを意味します。 Latin-1以外のUnicode文字はANSIに変換できないため、疑問符に変換されます。さまざまなWindows関数の適切なUnicodeバージョンを常に呼び出すように、プログラムがUnicodeサポートをオンにしてコンパイルされていることを確認してください(つまり、プリプロセッサシンボルUNICODEおよび_UNICODEはプロジェクトによって#defineされています)。

基本的に、テキストが破損しています。あるエンコーディングでUnicodeテキストを取得し、ターゲットエンコーディングにソーステキストのすべての文字が含まれていることを確認せずに、別のエンコーディングに変換しました。そうすることで、あなたはたくさんの意味不明な言葉を持っています。

これを行う方法は次のとおりです。

  1. UTF-8テキストをANSIとして処理する(最初に有効なコードページに変換せずに)
  2. コードページに正しい文字が含まれているかどうかを確認せずに、Unicodeテキストをコードページに変換します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top