文字コードとは?~UTF-8はパソコンの世界共通語~|データ分析用語を解説

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

Unicode、ASCIIコード、Shift-JIS、UTF-8、UTF-16の関係を理解する

データ分析を行っていると、必ず出てくる専門用語で「文字コード」がありますが、それぞれの文字コードの概念は、曖昧になってはいませんか? これから説明する内容は、文字コードとは何かを代表的な文字コードの関係性から説明します。

UnicodeとUTF-16は別物 ~符号化文字集合と符号化形式について~

若い情報処理系の技術者に対して、「代表的な文字コードって何?」と質問した時、返ってくる内容として「ASCIIコード、Shift-JIS、UTF-8、UTF-16、Unicode…」と答えるケースがあります。これは、厳密にいえば正しい答えではありません。
Unicodeは「符号化文字集合」と言われ、世界中の文字を集め、それぞれの文字に対して、番号を付けて管理している文字の集合の事です。例えば、「あ」という文字は、Unicodeでは、16進表記で「304002」、10進表記で「3162114」で登録されています。(16進数はパソコン上の数字の数え方です)
そして、この「符号化文字集合」をパソコンで扱うために「符号化形式」に従って、数値変換します。この「符号化形式」の中に文字コードとしてUTF-8、UTF-16などがあるのです。そのため、「Unicode=UTF-16」と誤解している方が多いようです。また、符号化文字集合には、「JIS X 0208」という日本工業規格があり、これを基に「Shift-JIS」などの文字コードが作られています。char_code



これから代表的な文字コードについて説明します。

ASCIIコード

最も基礎となる文字コードです。下記の表のようにキーボード上にある「数字」、「アルファベット」、「記号」を1バイトで表現します。これらの文字の他に、赤字で記載している改行コード(LF、CR)やタブ文字(HT)、制御コードのNULLやBSなどもあります。ascii_code

Shift-JIS

ASCIIコードの文字に加え、日本語の文字を加えたのが、Shift-JISです。半角カタカナは1バイトで表現し、それ以外の全角文字は、2バイトで表現します。
Shift-JISの特徴として、文字コードの領域に「外字領域」と言われる「使っていない文字コードの領域」があり、この領域に対して、OSメーカやソフトウェアベンダーが独自の文字を設定しています。この設定された文字の中には、「草なぎ剛」の「なぎ」に該当する特殊な漢字などがあります。この様なShift-JISを拡張した物が、日本語のWindowsなどで使われている「MS932」です。

UTF-8

ASCIIコードの文字に加え、世界中の文字を加えたのが、UTF-8です。ASCIIコードで以外の文字は、2~6バイトで表現され、日本語の文字は、基本的に3バイトで表現します。
ASCIIコードとの互換性が良いため、パソコンで扱いやすく、世界中の多くのソフトウェアは、UTF-8に対応しています。そのため、「パソコンの世界共通語」と言っても過言ではありません。

UTF-16

UTF-16は、ASCIIコードは使わず、基本的な世界中の文字(基本多言語)の全てを2バイトで表現し、残りのマイナーな文字を4バイトで表現した文字コードです。そのため、半角アルファベット、半角数字、日本語のほとんどが2バイトで表現されます。
UTF-16は、多くも文字を対応し、様々な場面で使われていますが、UTF-8より対応するシフトウェアは少ないです。

文字コード変換と文字化けの関係性について

データファイルをDBやBIツールなどに取り込む際、事前に取込先で対応している文字コードに変換する場合があります。文字コードの変換処理自体は、文字変換ツールやテキストエディタの機能によって行うことが可能です。しかし、稀に文字コード変換に失敗して、「?」や「■」などの文字に置き換えられる事があります。これが、文字化けという現象です。
これは、各文字コードには、表現できる文字の範囲があり、対応していない文字の場合は、変換できずに代替文字が割り当てられるためです。特にShift-JISと、UTF-8やUTF-16の相互の変換で発生しやすいです。例えばShift-JISの外字領域にある文字は、OSやソフトウェアベンダーが独自で作った文字が含まれるため、UTF-8などではサポートされない場合があります。逆にUTF-8で対応しているハングル文字は、Shift-JISではサポートされません。このような事情によって、文字コード変換できずに文字化けが発生します。
データ分析用語:索引

SERVICE