文字コード超研究
目次
文字コード
文字に振られた番号
文字:システム開発
文字コード(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で紐付けられ重複は無い
コードポイントが定められる
ASCII、Unicode、「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」と決められているそうです。