> For the complete documentation index, see [llms.txt](https://kunishi.gitbook.io/web-application-textbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kunishi.gitbook.io/web-application-textbook/kdo.md).

# 補遺: 文字の扱い

Webに関する技術を取り上げるとき、文字をコンピュータでどう表現するか、という問題があちこちに関わってくる。これは極めて複雑な話で、本格的に説明するとそれだけでかなりの時間を必要とする。ここでは、Webを理解する上で必要な、ごく基本的な知識のみ説明することとする。

## 文字コード

コンピュータで文字を扱うには、文字とコンピュータ上のバイト表現との対応を定める必要がある。この対応のことを**文字コード**という。Webに限らず、通信で文字コードが問題になるのは、送り手と受け手で共通の文字コードを用いなければ文字情報の伝達が行えないためである。したがって、通信での文字コードは通常、国際標準規格になっているものが選択される。

文字コードの中には、文字とバイト表現とを直接対応付けず、文字と整数との対応、整数とバイト表現との対応、というように2段階に分けているものがある。前者の対応付けを**文字集合**（文字セット, coded character set）、後者の対応付けを**文字符号化方式**（character encoding scheme）という。

英大文字・小文字、数字などを表現する代表的な文字コードであるASCII、欧米圏の代表的な文字コードであるISO-8859-1などは、文字集合と文字符号化方式が一体になっている例である。一方、日本語を表現するときによく用いられているISO-2022-JP, EUC-JP, Shift\_JISは、いずれもJIS X 0208という文字集合に対する文字符号化方式である。

## Unicode

漢字を含む各国語を扱う文字コードとして、現代のITにおいて広く用いられているのがUnicode（ISO/IEC 10646）である。制定の母体がUnicode ConsortiumとISOの2団体であるため名称が2つあるが、事実上はほぼ同じものであると考えて良い。

Unicodeは文字集合と文字符号化方式が分かれている文字コードであり、Unicodeで定められた文字集合に対し、様々なバイト表現へ対応づける文字符号化方式が存在する。代表的な文字符号化方式は以下の2つである。

* UTF-8: 1文字が1〜6バイトで表現される。ISO-8859-1の上位互換になっており、従来のアプリケーションとの親和性が高い。
* UTF-16: 1文字が2バイトで表現される。Windowsの内部で用いられている文字コードはこれである。

## Webにおける文字コード

上記のように、歴史的経緯からさまざまな文字集合や文字符号化方式が乱立しているが、Webに関する限り、原則として「文字集合としてUnicode、文字符号化方式としてUTF-8を使う」と考えてよい。これ以外の選択肢は、よほどの理由がない限り選択してはいけない。
