4D v11 SQL Unicodeの手引き Char(2)=Char(3) Unicode (4D)とい

Download Report

Transcript 4D v11 SQL Unicodeの手引き Char(2)=Char(3) Unicode (4D)とい

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