2012-03-18 17 views
3

Cでは、文字列はcharの配列で表されることが知られています。C文字列操作における中国語文字の扱い

ほとんどの32ビットプロセッサでは、charは1バイトまたは8ビットをとります。文字列は、byteの配列で構成されます。

中国語や日本語などの拡張文字は、となり、ビットが8ビットより多くなるため、これについては少し混乱しています。

たとえば、char array[100]のような構文を使用して、英字の配列が定義されているのと同じ方法で、中国語の配列を定義できることをテストしました。だから私の質問は次のとおりです:

一般的な8ビット文字と8ビット以上の文字の間のギャップを埋めるようにして、上記のように扱われるメカニズムがありますか? 。

+3

代わりにwchar_tを使うべきでしょう。これはワイド文字とそのC/C++での使用についてもう少し説明します。 http://en.wikipedia.org/wiki/Wide_character#C.2FC.2B.2B –

+1

MBCSまたはマルチバイト文字セットと呼ばれるものを調べる必要があります。 –

+0

@JesusRamos: 'wchar_t'型(むしろ、それを使用するコード)は、どのエンコーディングが使用されているのか、あるいはUnicodeをサポートしているのかわからないので、移植性があまりありません。 –

答えて

3

はい、マルチバイト文字エンコードを使用します。これは、かなり広い被写体であるが、以下で開始:

  • wchar
  • Unicode
  • UTF-8(文字ベースの機能を持つ文字列を操作することができます)。
+0

'wchar'は本当に移植性がないので、決して正しい選択ではないことに注意してください。 (あなたが使用するエンコーディングがわからないからです)。 –

0

普通の(バイト< = 127)文字を使用することができるように、UTF8文字列エンコーディングを使用することをお勧めします。また、 、または4バイト文字をUnicode制御文字(バイト> = 128)で検出します。関連するいくつかの問題については、libiconvを使用することもできます。 http://www.gnu.org/software/libiconv/