PebbleOSでの文字列の扱い方 [Pebble]
Pebble側のOSはPebbleOSと呼ばれていますが、WatchappもWatchfaceもC言語で開発します。
PebbleOSのC言語での文字列の扱い方は、内部コードはUTF-8となっていますが、マルチバイト文字の扱いが原始的です。
文字列リテラルには、"ABCあいう漢字" というように漢字は使用できます。
しかし、strcmp()等の文字列処理関数は、シングルバイト文字のみでの対応となっているので、
UTF-8について詳しく知る必要があるようです。
char str = "あいう";
int length =0;
length = strlen(str);
実行結果のlengthの値は、9になります。
ひらがなは、UTF-8では3バイトになっているようです。
UTF-8の「あ」を調べてみると...
「あ」 のUTF-8のバイト列は、E3 81 82 と3バイトになっています。
「い」は、E3 81 84
「う」は、E3 81 86
文字列"あいう"は、終端文字(0x00)を含めると、
E3 81 82 E3 81 84 E3 81 86 00
の10バイトをメモリー上に格納されることになります。
なので、和文や絵文字、ギリシア文字等ASCII文字以外を扱う場合は、
strlen()で文字数を求めることはできないです。
PebbleOSのC言語での文字列の扱い方は、内部コードはUTF-8となっていますが、マルチバイト文字の扱いが原始的です。
文字列リテラルには、"ABCあいう漢字" というように漢字は使用できます。
しかし、strcmp()等の文字列処理関数は、シングルバイト文字のみでの対応となっているので、
UTF-8について詳しく知る必要があるようです。
char str = "あいう";
int length =0;
length = strlen(str);
実行結果のlengthの値は、9になります。
ひらがなは、UTF-8では3バイトになっているようです。
UTF-8の「あ」を調べてみると...
「あ」 のUTF-8のバイト列は、E3 81 82 と3バイトになっています。
「い」は、E3 81 84
「う」は、E3 81 86
文字列"あいう"は、終端文字(0x00)を含めると、
E3 81 82 E3 81 84 E3 81 86 00
の10バイトをメモリー上に格納されることになります。
なので、和文や絵文字、ギリシア文字等ASCII文字以外を扱う場合は、
strlen()で文字数を求めることはできないです。
コメント 0