unicode-v11-0
TRANSCRIPT
4D v11 SQLUnicodeの手引き
Unicode (4D)といえば...
Char(2)=Char(3)
Unicode (4D)といえば...
Char(4)=””
Character code(“ゔ”)#Character code(“ゔ”)
Length(“ゔ”)#Length(“ゔ”)
Position(Char(0);”abc”)=1
Char(2)=Char(3)
Unicode (4D)といえば...
Char(4)=””
Character code(“ゔ”)#Character code(“ゔ”)
Length(“ゔ”)#Length(“ゔ”)
Position(Char(0);”abc”)=1
...原理を理解することが肝心です。
Unicode 基本用語
基本用語• コードポイント • グリフ • 面 • サロゲート • 結合文字 • 互換合成文字 • 正規化 • 修飾字 • 非文字
コードポイント
定義
コードポイント
文字の識別番号
定義
コードポイント
文字の識別番号 Unicodeでは, すべての文字に特有の名前と特有の番号つまりコードポイントが割り当てられている。例...
名前 : LATIN CAPITAL LETTER A
番号 : 0x41
定義
コードポイント
文字の識別番号 形式 U+ _ _ _ _ _ _
定義
コードポイント
文字の識別番号 形式
範囲U+ _ _ _ _ _ _U+0000 ~ U+10FFFF
定義
コードポイント
文字の識別番号 形式
範囲U+ _ _ _ _ _ _U+0000 ~ U+10FFFF
U+0000 ~ U+007F (127) = ASCII
U+0000 ~ U+FFFF (65,535) = 基本 Unicode
U+0000 ~ U+10FFFF (1,048,576) = 拡張 Unicode
コードポイント
U+0041
コードポイント
U+0041
コードポイント
LATIN CAPITAL LETTER A
U+0041
コードポイント
LATIN CAPITAL LETTER A A
U+0041
コードポイント
LATIN CAPITAL LETTER A AU+3042
U+0041
コードポイント
LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A
U+0041
コードポイント
LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あ
U+0041
コードポイント
LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あU+20BB7
U+0041
コードポイント
LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あU+20BB7
CJK IDEOGRAPH #20BB7
U+0041
コードポイント
LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あU+20BB7
CJK IDEOGRAPH #20BB7 𠮷
グリフ
定義
グリフ
文字の画面または紙面における視覚的な表現。
同一のグリフが異なるコードポイントで使用される場合もある。
グリフ
U+0061
グリフ
U+0061
グリフ
LATIN SMALL LETTER A
U+0061
グリフ
LATIN SMALL LETTER A a
U+0061
グリフ
LATIN SMALL LETTER A aU+0430
U+0061
グリフ
LATIN SMALL LETTER A aU+0430CYRILLIC SMALL LETTER A
U+0061
グリフ
LATIN SMALL LETTER A aU+0430CYRILLIC SMALL LETTER A a
U+0061
グリフ
LATIN SMALL LETTER A aU+0430CYRILLIC SMALL LETTER A aコードポイントは言語系 (スクリプト) 別に分類されている。ラテンとキリルは別スクリプト。
グリフ
U+8A9E
グリフ
U+8A9E
グリフ
CJK IDEOGRAPH #8A8E
U+8A9E
グリフ
CJK IDEOGRAPH #8A8E 語
U+8A9E
グリフ
CJK IDEOGRAPH #8A8E 語U+8BED
U+8A9E
グリフ
CJK IDEOGRAPH #8A8E 語U+8BEDCJK IDEOGRAPH #8BED
U+8A9E
グリフ
CJK IDEOGRAPH #8A8E 語U+8BEDCJK IDEOGRAPH #8BED 语
U+8A9E
グリフ
CJK IDEOGRAPH #8A8E 語U+8BEDCJK IDEOGRAPH #8BED 语中国語, 日本語, 韓国朝鮮語, ベトナム語は統一スクリプト; 簡体字と繁体字は別コードポイント。
面
定義
面
65,535 コードポイントの集合。 全部で 16 面が定義されている。
当初の Unicode は現在の面 #0, BMP。 (Basic Multilingual Planeの略)
面
U+0061
面
U+0061
面
= 面 #0
U+0061
面
= 面 #0 a
U+0061
面
= 面 #0 aU+1D11E
U+0061
面
= 面 #0 aU+1D11E= 面 #1
U+0061
面
= 面 #0 aU+1D11E= 面 #1 𝄞
U+0061
面
= 面 #0 aU+1D11E= 面 #1 𝄞U+20BB7
U+0061
面
= 面 #0 aU+1D11E= 面 #1 𝄞U+20BB7= 面 #2
U+0061
面
= 面 #0 aU+1D11E= 面 #1 𝄞
𠮷U+20BB7= 面 #2
UTF-16
定義
UTF-16
2 バイト (=16 ビット) を基本単位とする Unicode の符号方式。
UTF-16 は Mac OS X および Windows XP/Vista のネイティブ文字エンコーディング。
サロゲート
定義
サロゲート
高次の面に位置する別のコードポイントを差している一組のBMP コードポイント。
UTF-16 で拡張 Unicode を扱うために使用する。
サロゲート
サロゲートU+D842
サロゲートU+D842上位サロゲート
サロゲートU+D842
U+DFB7
上位サロゲート
サロゲートU+D842
U+DFB7
上位サロゲート
下位サロゲート
サロゲート
U+20BB7
U+D842
U+DFB7
上位サロゲート
下位サロゲート
サロゲート
U+20BB7
U+D842
U+DFB7
上位サロゲート
下位サロゲート𠮷
組合文字
定義
組合文字
文字に文字の部品を追加または調合するためのコードポイント。
ひとつの文字に任意の数の結合文字を適用することができる。
組合文字
組合文字
U+304C
組合文字
U+304CHIRAGANA LETTER U
組合文字
U+304CHIRAGANA LETTER U う
組合文字
U+304CHIRAGANA LETTER U うU+3099
組合文字
U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK
組合文字
U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK
組合文字
U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK
ゔ
互換合成文字
定義
互換合成文字
BMP のコードポイントひとつで表現できる結合済みの文字。
もっぱら Unicode 以前のエンコーディングとの互換性のために存在する。
互換合成文字
互換合成文字
U+304C
互換合成文字
U+304CHIRAGANA LETTER U
互換合成文字
U+304CHIRAGANA LETTER U う
互換合成文字
U+304CHIRAGANA LETTER U うU+3099
互換合成文字
U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK
互換合成文字
U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK
互換合成文字
U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK U+3094HIRAGANA LETTER VU ゔ
正規化
定義
正規化
等価とみなすことができる文字列を標準の形式で統一整理する。
4 種類の正規化形式;
NFC, NFCK, NFD, NFDK
正規化
正規化
ゔU+3094
正規化
ゔU+3094
U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099
NFKC
ゔ
正規化
ゔU+3094
NFD
U+304CU+3099
NFKC
ゔ U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099
NFKC
ゔ
ゔU+3094
U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099
NFKC
ゔ
ゔU+3094
NFC
U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099
NFKC
ゔ
ゔU+3094
NFC
U+304CU+3099ゔ
正規化
ゔU+3094
NFD
U+304CU+3099
NFKC
ゔ
ゔU+3094
NFC
U+304CU+3099
NFKD
ゔ
エンディアン
エンディアン
abc
エンディアン
abcU+0041U+0042U+0043
エンディアン
abcU+0041U+0042U+0043
リトルエンディアン
エンディアン
abcU+0041U+0042U+0043
リトルエンディアン41 00 42 00 43 00
エンディアン
abcU+0041U+0042U+0043
リトルエンディアン
ビッグエンディアン41 00 42 00 43 00
エンディアン
abcU+0041U+0042U+0043
リトルエンディアン
ビッグエンディアン41 00 42 00 43 00
00 41 00 42 00 43
Unicode 4Dのコマンド
Replace string
Replace string
定義 自立した文字列を置換する。修飾字の評価はロケールに依存する。
非文字は空の文字 (“”) と等価。
修飾字の例 : あ
非文字の例 : e
Replace string
定義 自立した文字列を置換する。修飾字の評価はロケールに依存する。
非文字は空の文字 (“”) と等価。
修飾字の例 : あ
非文字の例 : e
ー
Replace string
Replace string
a c
Replace string
a c U+0041U+0000U+0043
Replace string
a c U+0041U+0000U+0043
Char(0) を ”b” で置換
Replace string
a c U+0041U+0000
a c
U+0043
Char(0) を ”b” で置換
Replace string(*)
Replace string(*)
定義 Unicode の規則(前後性)を無視し, 修飾字や非文字であっても, 強制的に置換する。
Replace string(*)
Replace string(*)
a c
Replace string(*)
a c U+0041U+0000U+0043
Replace string(*)
a c U+0041U+0000U+0043
Char(0) を ”b” で置換
Replace string(*)
a c U+0041U+0000
abc
U+0043
Char(0) を ”b” で置換
Length
Length
定義 文字列に含まれる UTF-16 コードポイントの数。
サイズ(バイト数)/2と同じ。
文字(グリフクラスタ)の数であるとは限らない。
Length
Length
ça
Length
ça 2
Length
ça U+00E7U+00412
Length
ça U+00E7U+0041
ça2
Length
ça U+00E7U+0041
ça23
Length
ça U+00E7U+0041
ça U+0063U+0323U+0041
23
Position
Position
定義 特定した文字列の前に存在するUTF-16 コードポイント数。修飾字の評価はロケールに依存する。
非文字は空の文字 (“”) と等価。
Position
Position
あー
Position
あー 0
Position
あー U+3042U+30FC0
Position
あー U+3042U+30FC0
éte
Position
あー U+3042U+30FC0
1éte
Position
あー U+3042U+30FC
U+00E9U+0074U+0065
01
U+0301éte
Position(*)
Position(*)
定義 Unicode の規則(前後性)を無視し, 修飾字や非文字であっても, コードポイントを扱う。
Position(*)
Position(*)
あー
Position(*)
あー 2
Position(*)
あー U+3042U+30FC2
Position(*)
あー U+3042U+30FC2
éte
Position(*)
あー U+3042U+30FC2
4éte
Position(*)
あー U+3042U+30FC
U+00E9U+0074U+0065
24
U+0301éte