unicode-v11-0

147
4D v11 SQL Unicodeの手引き

Upload: kmiyako

Post on 17-Jan-2017

196 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Unicode-v11-0

4D v11 SQLUnicodeの手引き

Page 2: Unicode-v11-0

Unicode (4D)といえば...

Page 3: Unicode-v11-0

Char(2)=Char(3)

Unicode (4D)といえば...

Char(4)=””

Character code(“ゔ”)#Character code(“ゔ”)

Length(“ゔ”)#Length(“ゔ”)

Position(Char(0);”abc”)=1

Page 4: Unicode-v11-0

Char(2)=Char(3)

Unicode (4D)といえば...

Char(4)=””

Character code(“ゔ”)#Character code(“ゔ”)

Length(“ゔ”)#Length(“ゔ”)

Position(Char(0);”abc”)=1

...原理を理解することが肝心です。

Page 5: Unicode-v11-0

Unicode 基本用語

Page 6: Unicode-v11-0

基本用語• コードポイント • グリフ • 面 • サロゲート • 結合文字 • 互換合成文字 • 正規化 • 修飾字 • 非文字

Page 7: Unicode-v11-0

コードポイント

Page 8: Unicode-v11-0

定義

コードポイント

文字の識別番号

Page 9: Unicode-v11-0

定義

コードポイント

文字の識別番号 Unicodeでは, すべての文字に特有の名前と特有の番号つまりコードポイントが割り当てられている。例...

名前 : LATIN CAPITAL LETTER A

番号 : 0x41

Page 10: Unicode-v11-0

定義

コードポイント

文字の識別番号 形式 U+ _ _ _ _ _ _

Page 11: Unicode-v11-0

定義

コードポイント

文字の識別番号 形式

範囲U+ _ _ _ _ _ _U+0000 ~ U+10FFFF

Page 12: Unicode-v11-0

定義

コードポイント

文字の識別番号 形式

範囲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

Page 13: Unicode-v11-0

コードポイント

Page 14: Unicode-v11-0

U+0041

コードポイント

Page 15: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A

Page 16: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A A

Page 17: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A AU+3042

Page 18: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A

Page 19: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あ

Page 20: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あU+20BB7

Page 21: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あU+20BB7

CJK IDEOGRAPH #20BB7

Page 22: Unicode-v11-0

U+0041

コードポイント

LATIN CAPITAL LETTER A AU+3042HIRAGANA LETTER A あU+20BB7

CJK IDEOGRAPH #20BB7 𠮷

Page 23: Unicode-v11-0

グリフ

Page 24: Unicode-v11-0

定義

グリフ

文字の画面または紙面における視覚的な表現。

同一のグリフが異なるコードポイントで使用される場合もある。

Page 25: Unicode-v11-0

グリフ

Page 26: Unicode-v11-0

U+0061

グリフ

Page 27: Unicode-v11-0

U+0061

グリフ

LATIN SMALL LETTER A

Page 28: Unicode-v11-0

U+0061

グリフ

LATIN SMALL LETTER A a

Page 29: Unicode-v11-0

U+0061

グリフ

LATIN SMALL LETTER A aU+0430

Page 30: Unicode-v11-0

U+0061

グリフ

LATIN SMALL LETTER A aU+0430CYRILLIC SMALL LETTER A

Page 31: Unicode-v11-0

U+0061

グリフ

LATIN SMALL LETTER A aU+0430CYRILLIC SMALL LETTER A a

Page 32: Unicode-v11-0

U+0061

グリフ

LATIN SMALL LETTER A aU+0430CYRILLIC SMALL LETTER A aコードポイントは言語系 (スクリプト) 別に分類されている。ラテンとキリルは別スクリプト。

Page 33: Unicode-v11-0

グリフ

Page 34: Unicode-v11-0

U+8A9E

グリフ

Page 35: Unicode-v11-0

U+8A9E

グリフ

CJK IDEOGRAPH #8A8E

Page 36: Unicode-v11-0

U+8A9E

グリフ

CJK IDEOGRAPH #8A8E 語

Page 37: Unicode-v11-0

U+8A9E

グリフ

CJK IDEOGRAPH #8A8E 語U+8BED

Page 38: Unicode-v11-0

U+8A9E

グリフ

CJK IDEOGRAPH #8A8E 語U+8BEDCJK IDEOGRAPH #8BED

Page 39: Unicode-v11-0

U+8A9E

グリフ

CJK IDEOGRAPH #8A8E 語U+8BEDCJK IDEOGRAPH #8BED 语

Page 40: Unicode-v11-0

U+8A9E

グリフ

CJK IDEOGRAPH #8A8E 語U+8BEDCJK IDEOGRAPH #8BED 语中国語, 日本語, 韓国朝鮮語, ベトナム語は統一スクリプト; 簡体字と繁体字は別コードポイント。

Page 41: Unicode-v11-0

Page 42: Unicode-v11-0

定義

65,535 コードポイントの集合。 全部で 16 面が定義されている。

当初の Unicode は現在の面 #0, BMP。 (Basic Multilingual Planeの略)

Page 43: Unicode-v11-0

Page 44: Unicode-v11-0

U+0061

Page 45: Unicode-v11-0

U+0061

= 面 #0

Page 46: Unicode-v11-0

U+0061

= 面 #0 a

Page 47: Unicode-v11-0

U+0061

= 面 #0 aU+1D11E

Page 48: Unicode-v11-0

U+0061

= 面 #0 aU+1D11E= 面 #1

Page 49: Unicode-v11-0

U+0061

= 面 #0 aU+1D11E= 面 #1 𝄞

Page 50: Unicode-v11-0

U+0061

= 面 #0 aU+1D11E= 面 #1 𝄞U+20BB7

Page 51: Unicode-v11-0

U+0061

= 面 #0 aU+1D11E= 面 #1 𝄞U+20BB7= 面 #2

Page 52: Unicode-v11-0

U+0061

= 面 #0 aU+1D11E= 面 #1 𝄞

𠮷U+20BB7= 面 #2

Page 53: Unicode-v11-0

UTF-16

Page 54: Unicode-v11-0

定義

UTF-16

2 バイト (=16 ビット) を基本単位とする Unicode の符号方式。

UTF-16 は Mac OS X および Windows XP/Vista のネイティブ文字エンコーディング。

Page 55: Unicode-v11-0

サロゲート

Page 56: Unicode-v11-0

定義

サロゲート

高次の面に位置する別のコードポイントを差している一組のBMP コードポイント。

UTF-16 で拡張 Unicode を扱うために使用する。

Page 57: Unicode-v11-0

サロゲート

Page 58: Unicode-v11-0

サロゲートU+D842

Page 59: Unicode-v11-0

サロゲートU+D842上位サロゲート

Page 60: Unicode-v11-0

サロゲートU+D842

U+DFB7

上位サロゲート

Page 61: Unicode-v11-0

サロゲートU+D842

U+DFB7

上位サロゲート

下位サロゲート

Page 62: Unicode-v11-0

サロゲート

U+20BB7

U+D842

U+DFB7

上位サロゲート

下位サロゲート

Page 63: Unicode-v11-0

サロゲート

U+20BB7

U+D842

U+DFB7

上位サロゲート

下位サロゲート𠮷

Page 64: Unicode-v11-0

組合文字

Page 65: Unicode-v11-0

定義

組合文字

文字に文字の部品を追加または調合するためのコードポイント。

ひとつの文字に任意の数の結合文字を適用することができる。

Page 66: Unicode-v11-0

組合文字

Page 67: Unicode-v11-0

組合文字

U+304C

Page 68: Unicode-v11-0

組合文字

U+304CHIRAGANA LETTER U

Page 69: Unicode-v11-0

組合文字

U+304CHIRAGANA LETTER U う

Page 70: Unicode-v11-0

組合文字

U+304CHIRAGANA LETTER U うU+3099

Page 71: Unicode-v11-0

組合文字

U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK

Page 72: Unicode-v11-0

組合文字

U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK

Page 73: Unicode-v11-0

組合文字

U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK

Page 74: Unicode-v11-0

互換合成文字

Page 75: Unicode-v11-0

定義

互換合成文字

BMP のコードポイントひとつで表現できる結合済みの文字。

もっぱら Unicode 以前のエンコーディングとの互換性のために存在する。

Page 76: Unicode-v11-0

互換合成文字

Page 77: Unicode-v11-0

互換合成文字

U+304C

Page 78: Unicode-v11-0

互換合成文字

U+304CHIRAGANA LETTER U

Page 79: Unicode-v11-0

互換合成文字

U+304CHIRAGANA LETTER U う

Page 80: Unicode-v11-0

互換合成文字

U+304CHIRAGANA LETTER U うU+3099

Page 81: Unicode-v11-0

互換合成文字

U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK

Page 82: Unicode-v11-0

互換合成文字

U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK

Page 83: Unicode-v11-0

互換合成文字

U+304CHIRAGANA LETTER U うU+3099COMBINING HIRAGANA KATAKANA VOICED SOUND MARK U+3094HIRAGANA LETTER VU ゔ

Page 84: Unicode-v11-0

正規化

Page 85: Unicode-v11-0

定義

正規化

等価とみなすことができる文字列を標準の形式で統一整理する。

4 種類の正規化形式;

NFC, NFCK, NFD, NFDK

Page 86: Unicode-v11-0

正規化

Page 87: Unicode-v11-0

正規化

ゔU+3094

Page 88: Unicode-v11-0

正規化

ゔU+3094

U+304CU+3099ゔ

Page 89: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099ゔ

Page 90: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099ゔ

Page 91: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099

NFKC

Page 92: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099

NFKC

ゔ U+304CU+3099ゔ

Page 93: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099

NFKC

ゔU+3094

U+304CU+3099ゔ

Page 94: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099

NFKC

ゔU+3094

NFC

U+304CU+3099ゔ

Page 95: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099

NFKC

ゔU+3094

NFC

U+304CU+3099ゔ

Page 96: Unicode-v11-0

正規化

ゔU+3094

NFD

U+304CU+3099

NFKC

ゔU+3094

NFC

U+304CU+3099

NFKD

Page 97: Unicode-v11-0

エンディアン

Page 98: Unicode-v11-0

エンディアン

abc

Page 99: Unicode-v11-0

エンディアン

abcU+0041U+0042U+0043

Page 100: Unicode-v11-0

エンディアン

abcU+0041U+0042U+0043

リトルエンディアン

Page 101: Unicode-v11-0

エンディアン

abcU+0041U+0042U+0043

リトルエンディアン41 00 42 00 43 00

Page 102: Unicode-v11-0

エンディアン

abcU+0041U+0042U+0043

リトルエンディアン

ビッグエンディアン41 00 42 00 43 00

Page 103: Unicode-v11-0

エンディアン

abcU+0041U+0042U+0043

リトルエンディアン

ビッグエンディアン41 00 42 00 43 00

00 41 00 42 00 43

Page 104: Unicode-v11-0

Unicode 4Dのコマンド

Page 105: Unicode-v11-0

Replace string

Page 106: Unicode-v11-0

Replace string

定義 自立した文字列を置換する。修飾字の評価はロケールに依存する。

非文字は空の文字 (“”) と等価。

修飾字の例 : あ

非文字の例 : e

Page 107: Unicode-v11-0

Replace string

定義 自立した文字列を置換する。修飾字の評価はロケールに依存する。

非文字は空の文字 (“”) と等価。

修飾字の例 : あ

非文字の例 : e

Page 108: Unicode-v11-0

Replace string

Page 109: Unicode-v11-0

Replace string

a c

Page 110: Unicode-v11-0

Replace string

a c U+0041U+0000U+0043

Page 111: Unicode-v11-0

Replace string

a c U+0041U+0000U+0043

Char(0) を ”b” で置換

Page 112: Unicode-v11-0

Replace string

a c U+0041U+0000

a c

U+0043

Char(0) を ”b” で置換

Page 113: Unicode-v11-0

Replace string(*)

Page 114: Unicode-v11-0

Replace string(*)

定義 Unicode の規則(前後性)を無視し, 修飾字や非文字であっても, 強制的に置換する。

Page 115: Unicode-v11-0

Replace string(*)

Page 116: Unicode-v11-0

Replace string(*)

a c

Page 117: Unicode-v11-0

Replace string(*)

a c U+0041U+0000U+0043

Page 118: Unicode-v11-0

Replace string(*)

a c U+0041U+0000U+0043

Char(0) を ”b” で置換

Page 119: Unicode-v11-0

Replace string(*)

a c U+0041U+0000

abc

U+0043

Char(0) を ”b” で置換

Page 120: Unicode-v11-0

Length

Page 121: Unicode-v11-0

Length

定義 文字列に含まれる UTF-16 コードポイントの数。

サイズ(バイト数)/2と同じ。

文字(グリフクラスタ)の数であるとは限らない。

Page 122: Unicode-v11-0

Length

Page 123: Unicode-v11-0

Length

ça

Page 124: Unicode-v11-0

Length

ça 2

Page 125: Unicode-v11-0

Length

ça U+00E7U+00412

Page 126: Unicode-v11-0

Length

ça U+00E7U+0041

ça2

Page 127: Unicode-v11-0

Length

ça U+00E7U+0041

ça23

Page 128: Unicode-v11-0

Length

ça U+00E7U+0041

ça U+0063U+0323U+0041

23

Page 129: Unicode-v11-0

Position

Page 130: Unicode-v11-0

Position

定義 特定した文字列の前に存在するUTF-16 コードポイント数。修飾字の評価はロケールに依存する。

非文字は空の文字 (“”) と等価。

Page 131: Unicode-v11-0

Position

Page 132: Unicode-v11-0

Position

あー

Page 133: Unicode-v11-0

Position

あー 0

Page 134: Unicode-v11-0

Position

あー U+3042U+30FC0

Page 135: Unicode-v11-0

Position

あー U+3042U+30FC0

éte

Page 136: Unicode-v11-0

Position

あー U+3042U+30FC0

1éte

Page 137: Unicode-v11-0

Position

あー U+3042U+30FC

U+00E9U+0074U+0065

01

U+0301éte

Page 138: Unicode-v11-0

Position(*)

Page 139: Unicode-v11-0

Position(*)

定義 Unicode の規則(前後性)を無視し, 修飾字や非文字であっても, コードポイントを扱う。

Page 140: Unicode-v11-0

Position(*)

Page 141: Unicode-v11-0

Position(*)

あー

Page 142: Unicode-v11-0

Position(*)

あー 2

Page 143: Unicode-v11-0

Position(*)

あー U+3042U+30FC2

Page 144: Unicode-v11-0

Position(*)

あー U+3042U+30FC2

éte

Page 145: Unicode-v11-0

Position(*)

あー U+3042U+30FC2

4éte

Page 146: Unicode-v11-0

Position(*)

あー U+3042U+30FC

U+00E9U+0074U+0065

24

U+0301éte

Page 147: Unicode-v11-0