文字コード超研究

文字コード

文字に振られた番号
文字:システム開発
文字コード(Shift_JIS):8356 8358 8365 8380 8a4a 94ad
文字コード(UTF8):e382b7 e382b9 e38386 e383a0 e9968b e799ba

文字集合

=文字セット
文字の集まり
文字の種類と順番が規定される


あ、い、う、え、お
か、き、く、け、こ
・・・
ア、イ、ウ、エ、オ
・・・

文字コード系

エンコーディングスキーム
文字と文字コードの対応関係
Shift_Jis、UTF-8等

文字化けの原理

8356 8358 8365 8380 8a4a 94ad に対して
Shift-JISで解釈してテキストエディタで開いた結果
システム開発
UTF8で解釈してテキストエディタで開いた結果
�V �X �e �� �J ��

エンコーディング

=符号化
文字 → 文字コード

デコーディング

=複合化
文字コード → 文字

バイナリーファイル

文字コードを含むコンピュータの読み込み用ファイル

テキストファイル

文字コードを文字に変換して読めるファイル

制御文字、図形文字

0 1 2 3 4 5 6 7
0 制御
文字
図形
文字
1
2
3
5
6
7
8
9
A
B
C
D
E
F

制御文字
画面やプリンターを制御(改行や削除)
図形文字
画面やプリンターに表示される文字(a、b、c等)

符号化文字集合

文字 ←→ 符号 の対応表
文字とビットが1対1で紐付けられ重複は無い
コードポイントが定められる
ASCIIUnicode、「JIS X 0208」等

文字符号化方式

文字集合の各文字についての変換方法
文字集合を運別のバイト列に変換する
JIS系
・EUC-JP
・Shift_JIS
Unicode
・UTF-8
・UTF-16
JIS、Unicode=文字集合、≠文字符号化方式
Shift-Jis、UTF-8=文字符号化方式、≠文字集合

コードポイント

文字コード体系におけるコード位置

ASCII

コンピューターの歴史上初の標準文字コード
7ビット(128種類)の文字コードを持つ
アルファベットや一部の記号(#、$、/等)のみ
現在でもほぼ全てのPC/OSで対応

0 1 2 3 4 5 6 7
0 NUL
(null文字)
DLE
(データリンクエスケープ)
(空白) 0 @ P ` p
1 SOH
(ヘッダ開始)
DC1
(装置制御1)
! 1 A Q a q
2 STX
(テキスト開始)
DC2
(装置制御2)
" 2 B R b r
3 ETX
(テキスト終了)
DC3
(装置制御3)
# 3 C S c s
4 EOT
(転送終了)
DC4
(装置制御4)
$ 4 D T d t
5 ENQ
(照会)
NAK
(受信失敗)
% 5 E U e u
6 ACK
(受信OK)
SYN
(同期)
& 6 F V f v
7 BEL
(警告)
ETB
(転送ブロック終了)
' 7 G W g w
8 BS
(後退)
CAN(とりけし) ( 8 H X h x
9 HT
(水平タブ)
EM
(メディア終了)
) 9 I Y i y
A LF
(改行)
SUB
(置換)
* : J Z j z
B VT
(垂直タブ)
ESC
(エスケープ)
+ ; K [ k {
C FF
(改頁)
FS
(フォーム区切り)
, < L \ l |
D CR
(復帰)
GS
(グループ区切り)
= M ] m }
E SO
(シフトアウト)
RS
(レコード区切り)
. > N ^ n ~
F SI
(シフトイン)
US
(ユニット区切り)
/ ? O _ o DEL
(delete)
ISO646

ASCIIの国際化Ver
アルファベット部分はそのままに、記号部分を各国で入れ替えている
ASCII:# → ISO646:£
「ISO646準拠」等と表記される

JIS X 0201

ISO646の日本Ver
ASCII:\ → ISO646:¥
7ビットを拡張し、半角カナも使用可能に

Shift-JIS

日本のスタンダード
JIS X 0201をベースに改良

Unicode

世界中の文字を収録する文字コード規格(符号化文字集合)
Unicode用の文字符号化方式として、
UTF-8、UTF-16等がある
コードポイントの表記を特別に「U+16進数」で表す
例:U+200D

UCS

Universal multipul-octet coded Character Set
全世界的、複数のオクテットを使用した符号化文字集合
=Unicode用文字集合に番号を振ったもの
※この番号は文字コードではない

Unicodeでは、
・Unicode用の文字コード(UTF-8、UTF-16等)と、
・Unicode用の文字コード用の文字集合(=UCS)
を厳密に定義・区別している

UCS-2
=2オクテット=2バイト=16ビット
=65,536種類の文字集合
UCS-4
=4オクテット=4バイト=32ビット
=約21億種類の文字集合
※31ビットのみ使用する

Unicodeの使用

・Windowsのメモ張では「文字コード」として「Unicode」を指定して保存できる。
・Javaでは「Unicode」が使用される。
等について。
Unicodeは(符号化)文字集合であって文字コードではないハズでこれは矛盾しているのでは?
文字符号化方式」参照
⇒メモ張やJavaでいうUnicodeは「UTF-16」と決められているそうです。

コメントを残す

メールアドレスが公開されることはありません。