libcで期待される文字エンコードは何ですか?たとえば、gethostname(char name、size_t namelen);引数としてcharをとります。 nameパラメータはutf8(asciiを元のままにしておく)またはplain asciiまたは他の形式でエンコードすることが期待されていますか?libcの文字エンコーディング?
また、Cは任意の文字コード体系を必須としていますか?
libcで期待される文字エンコードは何ですか?たとえば、gethostname(char name、size_t namelen);引数としてcharをとります。 nameパラメータはutf8(asciiを元のままにしておく)またはplain asciiまたは他の形式でエンコードすることが期待されていますか?libcの文字エンコーディング?
また、Cは任意の文字コード体系を必須としていますか?
すべての文字列関数(widecharを除く)はネイティブcharsetのみをサポートします。 Unix/Linux/WindowsではASCII、IBMメインフレーム/ミッドレンジコンピュータではEBCDICです。
使用し、ワイド文字に対応するための標準的なCデータ型です。
wchar_tにはどのようなエンコーディングが使用されていますか?それはUCS2かutf16ですか? – chappar
@chappar:実装定義です。 –
実装定義ですか?アプリケーション定義と思ったのですか?同じOS上で同じコンパイラでコンパイルされた2つのアプリケーションには、異なるエンコーディングを使用する権利があります。 – bortzmeyer
char
は、7ビット互換のASCIIエンコーディングでなければなりません(ただし、これについては明確な参照が見つかりません)。 definition of wchar_t
is left to the implementationですが、C標準ではC portable characterの文字を同じにする必要があります。これを正しく理解すると、
char a = 'a';
wchar_t aw = L'a';
if (a == (char)aw) {
// should be true
}
標準ではUTF-8については何も言われていません。
ASCIIは必須ではなく、実装でもEBCDICを使用できます。 –
英語以外の環境でこれらの機能を使用するにはどうすればよいですか? – chappar
また、libcにはすべてのchar *関数に相当するwchar_t *がないと思います。 – chappar
自分で変換するか、仕事をするためのライブラリを入手する必要があります - 詳細はこちら:http://stackoverflow.com/questions/313555/light-c-unicode-library とにかくUTF-8でホスト名を付けることはできませんか? – qrdl