文字コードとは

【文字コード】とは
文字がコードに割り当てられているもので「■文字集合(キャラクターセット)」と「■文字符号化方式(エンコーディング)」を用いて表す

■文字集合(キャラクターセット)
・文字集合としては主に下記のようなものがある
▼JIS X 0208(JIS 漢字コード)「日本工業規格(JIS)が定める、日本語の文字集合規格」
文字に区と点の番号が割り付けられているもの
▼Unicode「世界中の文字コードを統一したひとつの文字集合で表す規格」
文字にコードポイントと呼ばれる番号が割り付けられているもの
▼ASCII「ASCII(American Standard Code for Infomation Interchange)が定める規格(半角文字、1バイト文字)」
文字集合の番号をそのまま0~127の1バイトで表すもの

■文字符号化方式(エンコーディング)
・JIS X 0208(JIS 漢字コード)の符号化方式としては主に下記のようなものがある
▼「ISO-2022-JP」(JIS)
▼「EUC-JP」(EUC)
▼「Shift_JIS」(SJIS)
※Windows標準の文字コードは「Shift_JIS」ではなく「Windows-31J」

・Unicodeの符号化方式としては主に下記のようなものがある
▼「UTF-8」
▼「UTF-16」
※UTF-16は2バイト単位で文字を処理するためファイルの先頭にバイトオーダーマーク(いわゆるBOM)を置いてそのファイルがどちらのエンディアンで作成されたものなのかを判別する
UTF-8は1バイト単位で処理するのでBOMは不要だが、なぜかBOMを付けることもできるという変なことになっている

【シフトJIS(Shift_JIS)】
日本語の文字集合を符号化する文字符号化方式のうちの一つ
▼MS漢字コード(CP932)
「Shift_JIS」にMicrosoftが独自拡張し「CP932」という管理番号を与えられたもの
さらにIBMが独自拡張した「IBM版CP932」、NECが独自拡張した「NEC版CP932」が現れて混乱が生じた
▼Windows-31J(MS932)
MicrosoftはIBM版CP932とNEC版CP932を統合しWindowsにおける日本語標準コードとし
IANA(インターネットに関連する番号を管理する組織)にWindows-31Jという名前で登録された
上記の混乱したIBM版CP932と区別するために特にJavaの世界ではMS932とも呼ばれる
※「CP932」、「MS932」、「Windows-31J」は同じものをさす
「Shift_JIS」とは異なるが、実際には「Windows-31J」をさす場合に「Shift_JIS」という言葉が使われることがある
プログラミングにおいて、文字コードに「Windows-31J」と指定すべきところを、「Shift_JIS」と指定すると「Windows-31J」で定義されている文字が「Shift_JIS」にはない場合には文字化けが発生する

【HTMLで使用するcharsetの種類】
—————————————————————————
文字符号化スキーム  :キャラクタセット
—————————————————————————
Western(Latin1)       :ISO-8859-1
Japanese(Auto-detect)   :ISO-2022-JP (JIS)
Japanese(EUC)     :EUC-JP (extended unix code)
Japanese(Shift JIS)        :Shift_JIS (MS漢字)
Unicode Text Format-8 :UTF-8
—————————————————————————