私はエンコーディングに精通していませんが、私が知っていると思うことは次のとおりです(間違っているかもしれませんが):
- ASCIIは、7ビットの固定長エンコーディングであり、ASCIIチャートにある文字を使用します。
- UTF8は、8ビットの可変長エンコーディングです。すべての文字はUTF8で記述できます。
- UCS-2 LE / BEは、最も一般的な文字をサポートする固定長の16ビットエンコーディングです。
- UTF-16は、16ビットの可変長エンコーディングです。すべての文字はUTF16で記述できます。
それらは何よりも正しいですか?
さて、質問のために:
- Windowsの「A」関数(など
SetWindowTextA
)はASCII文字列を取り込みますか?または「マルチバイト文字列」(これについては以下でさらに質問します)? - Windowsの「W」関数はUTF-16文字列またはUCS-2文字列を取り込みますか?彼らはUCS-2を取り入れていると思いましたが、名前がわかりにくいです。
- WideCharToMultiByteでは、Microsoftは「ワイド文字列」という単語をUTF-16を意味するために使用します。その文脈では、「マルチバイト文字列」とは何と見なされますか?UTF-8?
LPWSTR
「ワイド文字列」ですか?そうだと思いますが、それではUTF-16という意味ではないでしょうか。そして、それは、たとえば4バイトの文字を表示するために使用できるという意味ではないでしょうか。そうでない場合、... 4バイト文字を表示することは不可能ですか?(WindowsにはそれらのAPIがないようです。)WideCharToMultiByte
のスーパーセットの機能はwcstombs
ありますか?両方とも同じタイプの文字列で機能しますか?または、一方はUTF-16で動作し、もう一方はUCS-2で動作しますか?- ファイルパスはUTF-16またはUCS-2ですか?WindowsがMicrosoftのドキュメントから「不透明な文字の配列」として扱っていることは知っていますが、のような関数のC標準に従って、
fwprintf
標準化されたエンコーディングはありますか? - 「ANSI」エンコーディングとは何ですか?それも正しい用語ですか?そしてそれはASCIIとどのように関係していますか?
- (もっと質問がありましたが、これで十分です...とにかくそれらのいくつかを忘れました...)
これらは多くの質問であるため、これらすべてがどのように接続するかについての説明へのリンク(とにかくWindows APIでは役に立たないUnicode標準を読むことを除いて)も大歓迎です。
ありがとうございました!