Windowsは、wchar_t
シンボルを16ビット長と定義しています。しかしながら、使用される符号化UTF-16
は、いくつかのシンボルが実際には4バイト(32ビット)で符号化され得ることを示す。ワイド文字Windows
wchar_t symbol = ... // Whatever
かもしれないのみ実際のシンボルの一部を表す:
は、これは私がWindows
用のアプリケーションを開発していた場合、次の文があることを意味していますか?
そして、何私はwchar_t
は32ビット長である*nix
、下の同じことを行う場合には起こるのだろうか?
_code_ _code_ unit_と間違って_codeしました。各文字は1つのコードポイントにのみ関連付けられ、複数のコード単位で表現されます。 – ExpExc
@ExpExc:いいえ、私はしませんでした。キャラクタは、複数の*コードポイント*で表すことができます。もちろん、複数の* codeunit *で表すこともできます。例えば。 'U + 0061 U + U0306'は2つのコードポイント*であり、単一の文字「á」を表します。 CJKスクリプトでは、それはさらに明らかです。 – ybungalobill
また、OSはUTF-8文字列をネイティブに解釈しないため、Windowsでは、OSとの対話の際にUTF-8でエンコードされた文字列を使用しないでください。 Windows APIと対話するときは、UTF-16文字列を使用する必要があります。 UTF-8の使用を主張する場合、文字列をWindows APIに渡す前に、MultiByteToWideChar(CP_UTF8を指定)を呼び出してUTF-8からUTF-16に変換する必要があります。 UTF-8→UTF-16変換を処理するよりも、アプリケーションをUTF-16アプリケーションとして簡単にコーディングする方が簡単です。 Windowsの8ビット文字はUTF-8ではなく、ANSIコードページまたはOEM coeページのいずれかにあります。 –