a
(アルファベット)
́
(アクセント記号)
á
(結合文字)
(絵文字) (絵文字)
U+61 U+301
U+1F469 U+1F469U+200D
a
(ラテン文字)
́
(アクセント記号)
á か
(ひらがな)
゙
(濁点)
が
接合文字
(絵文字) (絵文字)
ᄋ
(ハングル字母)
ᅡ
(ハングル字母)
아
U+61 U+301 U+304B U+3099
U+110B U+1161
U+1F469 U+1F469U+200D
結合文字
ก
(タイ語子音)
ี
(タイ語母音)
ก
U+110B U+1161
字母の組み合わせ
㐂
(漢字)
異字体
セレクター
㐂󠄁
U+3402 U+E0101
㐂
(漢字)
㐂󠄂
U+3402 U+E0101
(絵文字)
U+1F469
異字体
セレクター
(肌トーン)
U+1F3FB
異字体
絵文字
(地域指定)
U+1F1EF
J
(地域指定)
U+1F1F5
P
(地域指定)
U+1F1FA
U
(地域指定)
U+1F1F8
S
ZWJ
ZWJ
ZWJ
1F468
1F3FB
200D
1F469
1F3FF
200D
1F466
1F3FD
200D
1F466
1F3FC
コード
ポイント UTF-16
D83D DC68
D83C DFFB
200D
D83D DC69
D83C DFFF
200D
D83D DC66
D83C DFFD
200D
D83D DC66
D83C DFFC
UTF-8
F0 9F 91 A8
F0 9F 8F BB
E2 80 8D
F0 9F 91 A9
F0 9F 8F BF
E2 80 8D
F0 9F 91 A6
F0 9F 8F BD
E2 80 8D
F0 9F 91 A6
F0 9F 8F BC
書記素
11文字
19文字
38バイト
41バイト1文字
61 62 63 1B 24 42 61 62 63 64 65 66 1B 28 42 64 65 66
a b c
JIS X 0208への切り替え
エスケープ シーケンス
JIS X 0201への切り替え
エスケープ シーケンス
d e f
痰 繙邃
Visual Studio Chrome
同じ文字
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUM ESC FS GS RS US
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [  ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL
8
9
A 。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ
B ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ
C タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ
D ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚
E
F
半角カナ
Shift JISの
1バイト目
Shift JISの
2バイト目
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUM ESC FS GS RS US
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [  ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL
8
9
A
B
C
D
E
F
1バイト目も2バイト目
もここを利用。半角カナ
は別のコードに移動
Shift JIS
MacJapanese
(Macintosh)
NEC特殊文字
(PC-98)
IBM特殊文字
(DOS/V)
Windows-31J
(Windows)
♡〠〄
鮏神≒
abcáèö
61 62 63 E1 E8 F6
0061 62 63 E1 E8 F600 00 00 00 00
Latin1
Unicode
ビット数 最小値 最大値 変換方法 ビット パターン
元コード ポイント 1バイト目 2バイト目 3バイト目 4バイト目
7 U+0000 U+007F そのまま xxxxxxx 0xxxxxxx
11 U+0080 U+07FF 2バイト化 xxxxxxxxxxxxx 10xxxxxx 1xxxxxxx
16 U+0800 U+FFFF 3バイト化 xxxxxxxxxxxxxxxxxxx 110xxxxx 1xxxxxxx 1xxxxxxx
21 U+10000 U+1FFFF 4バイト化 xxxxxxxxxxxxxxxxxxxxxxxxx 1110xxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx
範囲 変換方法 ビット パターン 備考
元コード ポイント 1文字目 2文字目
U+0000~U+D7FF,
U+E000~U+FFFF
そのまま xxxxxxxxxxxxxx xxxxxxxxxxxxxx
U+10000以上 2文字使う uuuuuxxxxxxxxxxxxxxxx 110110wwwwxxxxxx 110111xxxxxxxxxx wwww = uuuuu - 1
03 00 00 00 61 00 B1 03 42 30 00 00
文字列長の3を表す
4バイト整数
a
(U+61)
α
(U+03B1)
あ
(U+3042)
null文字
リトルエンディアンのUTF-16符号化列
char*型にキャストすると
このアドレスが渡される
{ " k e y " : " a あ " }
7B 20 22 6B 65 79 22 3A 20 22 61 E3 81 82 F0 9F 98 80 22 20 7D
61 00 42 30 3D D8 00 DE
␣ ␣ ␣
native
メモリ
managed
メモリ
7B 20 22 6B 65 79 22 3A 20 22 61 E3 81 82 F0 9F 98 80 22 20 7D
そのまま全部使うにしてもmanaged領域にコピーが必要
61 E3 81 82 F0 9F 98 80
部分的に抜き出すにはコピーが必要
UTF-8からUTF-16の変換でコピーが必要
文字 符号点 UTF32 UTF16 UTF8
a 61 61 00 00 00 61 00 61
α 3B1 B1 03 00 00 B1 03 CE B1
あ 3042 42 30 00 00 42 30 E3 81 82
1F600 00 F6 01 00 3D D8 00 DE F0 9F 98 80
ASCII文字 = 16進数2桁
élève学生
+e + ́
grapheme é l è 学v e … 8個生
code point e ́ l e ̀ v e 学 生 … 11個
UTF-16 e ́ l e ̀ v e 学 生 … 13個、26バイト
絵文字、skin toneは
サロゲート ペア
UTF-8 e ́ l e ̀ v e 学 生 … 23バイト
アクセント記号
は2バイト
かな漢字
は3バイト
絵文字
は4バイト
Unicode Illustration
Unicode Illustration

Unicode Illustration

  • 1.
  • 2.
    a (ラテン文字) ́ (アクセント記号) á か (ひらがな) ゙ (濁点) が 接合文字 (絵文字) (絵文字) ᄋ (ハングル字母) ᅡ (ハングル字母) 아 U+61U+301 U+304B U+3099 U+110B U+1161 U+1F469 U+1F469U+200D 結合文字 ก (タイ語子音) ี (タイ語母音) ก U+110B U+1161 字母の組み合わせ 㐂 (漢字) 異字体 セレクター 㐂󠄁 U+3402 U+E0101 㐂 (漢字) 㐂󠄂 U+3402 U+E0101 (絵文字) U+1F469 異字体 セレクター (肌トーン) U+1F3FB 異字体 絵文字 (地域指定) U+1F1EF J (地域指定) U+1F1F5 P (地域指定) U+1F1FA U (地域指定) U+1F1F8 S
  • 3.
    ZWJ ZWJ ZWJ 1F468 1F3FB 200D 1F469 1F3FF 200D 1F466 1F3FD 200D 1F466 1F3FC コード ポイント UTF-16 D83D DC68 D83CDFFB 200D D83D DC69 D83C DFFF 200D D83D DC66 D83C DFFD 200D D83D DC66 D83C DFFC UTF-8 F0 9F 91 A8 F0 9F 8F BB E2 80 8D F0 9F 91 A9 F0 9F 8F BF E2 80 8D F0 9F 91 A6 F0 9F 8F BD E2 80 8D F0 9F 91 A6 F0 9F 8F BC 書記素 11文字 19文字 38バイト 41バイト1文字
  • 4.
    61 62 631B 24 42 61 62 63 64 65 66 1B 28 42 64 65 66 a b c JIS X 0208への切り替え エスケープ シーケンス JIS X 0201への切り替え エスケープ シーケンス d e f 痰 繙邃
  • 5.
  • 6.
    0 1 23 4 5 6 7 8 9 A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUM ESC FS GS RS US 2 ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { | } ~ DEL 8 9 A 。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ B ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ C タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ D ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚ E F 半角カナ Shift JISの 1バイト目 Shift JISの 2バイト目
  • 7.
    0 1 23 4 5 6 7 8 9 A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUM ESC FS GS RS US 2 ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { | } ~ DEL 8 9 A B C D E F 1バイト目も2バイト目 もここを利用。半角カナ は別のコードに移動
  • 8.
  • 9.
    abcáèö 61 62 63E1 E8 F6 0061 62 63 E1 E8 F600 00 00 00 00 Latin1 Unicode
  • 10.
    ビット数 最小値 最大値変換方法 ビット パターン 元コード ポイント 1バイト目 2バイト目 3バイト目 4バイト目 7 U+0000 U+007F そのまま xxxxxxx 0xxxxxxx 11 U+0080 U+07FF 2バイト化 xxxxxxxxxxxxx 10xxxxxx 1xxxxxxx 16 U+0800 U+FFFF 3バイト化 xxxxxxxxxxxxxxxxxxx 110xxxxx 1xxxxxxx 1xxxxxxx 21 U+10000 U+1FFFF 4バイト化 xxxxxxxxxxxxxxxxxxxxxxxxx 1110xxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 範囲 変換方法 ビット パターン 備考 元コード ポイント 1文字目 2文字目 U+0000~U+D7FF, U+E000~U+FFFF そのまま xxxxxxxxxxxxxx xxxxxxxxxxxxxx U+10000以上 2文字使う uuuuuxxxxxxxxxxxxxxxx 110110wwwwxxxxxx 110111xxxxxxxxxx wwww = uuuuu - 1
  • 11.
    03 00 0000 61 00 B1 03 42 30 00 00 文字列長の3を表す 4バイト整数 a (U+61) α (U+03B1) あ (U+3042) null文字 リトルエンディアンのUTF-16符号化列 char*型にキャストすると このアドレスが渡される
  • 12.
    { " ke y " : " a あ " } 7B 20 22 6B 65 79 22 3A 20 22 61 E3 81 82 F0 9F 98 80 22 20 7D 61 00 42 30 3D D8 00 DE ␣ ␣ ␣ native メモリ managed メモリ 7B 20 22 6B 65 79 22 3A 20 22 61 E3 81 82 F0 9F 98 80 22 20 7D そのまま全部使うにしてもmanaged領域にコピーが必要 61 E3 81 82 F0 9F 98 80 部分的に抜き出すにはコピーが必要 UTF-8からUTF-16の変換でコピーが必要
  • 15.
    文字 符号点 UTF32UTF16 UTF8 a 61 61 00 00 00 61 00 61 α 3B1 B1 03 00 00 B1 03 CE B1 あ 3042 42 30 00 00 42 30 E3 81 82 1F600 00 F6 01 00 3D D8 00 DE F0 9F 98 80 ASCII文字 = 16進数2桁
  • 16.
    élève学生 +e + ́ graphemeé l è 学v e … 8個生 code point e ́ l e ̀ v e 学 生 … 11個 UTF-16 e ́ l e ̀ v e 学 生 … 13個、26バイト 絵文字、skin toneは サロゲート ペア UTF-8 e ́ l e ̀ v e 学 生 … 23バイト アクセント記号 は2バイト かな漢字 は3バイト 絵文字 は4バイト