- UTF-8 は Unicode の文字符号化方式の一つである
(Unicode と UTF-8 の違いが分かっているか?) - Java や Objective-C でプログラミングするときに文字の値は UTF-16 になっている
(ちゃんとプログラミングできるか?)
下記の表の内容を見て、全て理解できれば OK です。
あ | |
Unicode の規格でこの文字に割り当てられた Unicode スカラ値 (十六進数表記) |
U+3042 |
この文字の Unicode スカラ値を UTF-8 で 符号化したときのバイト列 (十六進数表記) |
E3 81 82 (3 バイト) |
この文字の Unicode スカラ値を UTF-16BE で 符号化したときのバイト列 (十六進数表記) |
30 42 (2 バイト) |
この文字の Unicode スカラ値を UTF-16LE で 符号化したときのバイト列 (十六進数表記) |
42 30 (2 バイト) |
この文字の Unicode スカラ値を UTF-32BE で 符号化したときのバイト列 (十六進数表記) |
00 00 30 42 (4 バイト) |
この文字の Unicode スカラ値を UTF-32LE で 符号化したときのバイト列 (十六進数表記) |
42 30 00 00 (4 バイト) |
// Java char ch = "あ".charAt(0); // ch == 0x3042 | |
// Objective-C NSString *s = @"あ"; unichar ch = [s characterAtIndex:0]; // ch == 0x3042 | |
(おまけ) この文字を Shift-JIS で 符号化したときのバイト列 (十六進数表記) |
82 A0 (2 バイト) |
𠮷 (UTF-16 のとき、サロゲートペア) |
|
Unicode の規格でこの文字に割り当てられた Unicode スカラ値 (十六進数表記) |
U+20BB7 |
この文字の Unicode スカラ値を UTF-8 で 符号化したときのバイト列 (十六進数表記) |
F0 A0 AE B7 (4 バイト) |
この文字の Unicode スカラ値を UTF-16BE で 符号化したときのバイト列 (十六進数表記) |
D8 42 DF B7 (4 バイト) |
この文字の Unicode スカラ値を UTF-16LE で 符号化したときのバイト列 (十六進数表記) |
42 D8 B7 DF (4 バイト) |
この文字の Unicode スカラ値を UTF-32BE で 符号化したときのバイト列 (十六進数表記) |
00 02 0B B7 (4 バイト) |
この文字の Unicode スカラ値を UTF-32LE で 符号化したときのバイト列 (十六進数表記) |
B7 0B 02 00 (4 バイト) |
// Java String s = "𠮷"; int len = s.length(); // len == 2 char ch1 = s.charAt(0); // ch1 == 0xD842 char ch2 = s.charAt(1); // ch2 == 0xDFB7 | |
// Objective-C NSString *s = @"𠮷"; int len = [s length]; // len == 2 unichar ch1 = [s characterAtIndex:0]; // ch1 == 0xD842 unichar ch2 = [s characterAtIndex:1]; // ch2 == 0xDFB7 |