[[TeX]] *エンコーディング [#r7c9477c] エンコーディング(encoding)とは、文字を 1000001 などの列(「バイト列」といいます)で表す方法のことをいいます。 **ASCII 文字 [#w9bbfd07] 「1バイト」とは「8ビット」のことで、0と1の8つの組合せのことです。2通りが8つですから 2の8乗=256 通りの組合せがあります。これでアラビア数字、ローマ字の大文字・小文字と主要な記号は表せます。これで表される文字を「1バイト文字」「半角文字」などといいます。ASCII 文字ともいいます。 「1バイト」とは「8ビット」のことで、0と1の8つの組合せのことです。2通りが8つですから 2の8乗 = 256 通りの組合せがあります。これでアラビア数字、ローマ字の大文字・小文字と主要な記号は表せます。これで表される文字を「1バイト文字」「半角文字」などといいます。ASCII 文字ともいいます。 **日本語のエンコーディング [#s9566feb] しかし日本語の場合を考えてみましょう。日本語にはひらがな、かたかな、漢字があります。とても256通りでは表せません。2バイトを使うと 256 x 256 = 65536 通り表せますから、漢字まで対応できそうです。これで表される文字を「2バイト文字」「全角文字」といいます。2バイト文字の画面の占有面積は1バイト文字の約2倍なので、直観的に理解できるでしょう((昔のワープロでの用語です。))。 しかし日本語の場合を考えてみましょう。日本語にはひらがな、かたかな、漢字があります。とても256通りでは表せません。2バイトを使うと 256 × 256 = 65536 通り表せますから、漢字まで対応できそうです。これで表される文字を「2バイト文字」「全角文字」といいます。2バイト文字の画面の占有面積は1バイト文字の約2倍なので、直観的に理解できるでしょう((昔のワープロでの用語です。))。 ただし、日本語のエンコーディング方式(文字コード)にはいくつかあります。 :UNIX|EUC-JP :Macintosh|Shift JIS :Windows|Shift JIS :情報通信|JIS(など) :電子メール|ISO-2022-JP (通称「JIS コード」。See [[WikiPedia.ja:ISO-2022-JP]]) :UNIX, Unix-like OS|EUC-JP (See [[WikiPedia.ja:EUC-JP]]) :Mac OS X|Shift_JIS (See [[WikiPedia.ja:Shift_JIS]]) :Mac OS 9|x-Mac-Japanese (Apple による Shift_JIS の拡張。See [[WikiPedia.ja:x-Mac-Japanese]]) :Microsoft Windows|Windows-31J (Microsoft による Shift_JIS の拡張。See [[WikiPedia.ja:Windows-31J]]) 対応していない文字コードの文書を開けば、当然うまく表示できません(「文字化け((ただし、文字化けの原因は他にある場合もあります。機種依存文字など。))」)。 **UTF-8, UTF-16 [#x5d3ef3e] 話を戻していろいろな言語のエンコーディングを考えてみます。日本語の場合なら2バイトで足りそうですが、それに中国語、韓国語、…などを含めたら2バイトでも足りません。そのような問題を克服するために Unicode が考え出されました。UTF-8 と UTF-16 は Unicode 用のエンコーディングです。多言語を表すために考え出されたので、いろいろな言語を同時に表現できます。今では様々な OS で使えるようになってきています。ただし Unicode には「規定されていない文字については救済不可能」という欠点があり、文字をたくさんもつ国からは批判されています(後で述べるように、古典ギリシア語にも同じ問題があります)。また、Unicode の規格が「ゆるい」ために発生する問題もあります。UTF-8、UTF-16 では文字によってバイト数が異なります。 話を戻していろいろな言語のエンコーディングを考えてみます。日本語の場合なら2バイトで足りそうですが、それに中国語、韓国語、……などを含めたら2バイトでも足りません。そのような問題を克服するために Unicode が考え出されました。UTF-8 と UTF-16 は Unicode 用のエンコーディングです。多言語を表すために考え出されたので、いろいろな言語を同時に表現できます。今では様々な OS で使えるようになってきています。ただし Unicode には「規定されていない文字については救済不可能」という欠点があり、文字をたくさんもつ国からは批判されています(後で述べるように、古典ギリシア語にも同じ問題があります)。また、Unicode の規格が「ゆるい」ために発生する問題もあります。UTF-8、UTF-16 では文字によってバイト数が異なります。 *各言語のエンコーディング [#c8859e88] -[[日本語>TeX/Encoding/Japanese]] -[[ギリシア語>TeX/Encoding/Greek]] *pTeX の Unicode 対応 [#q877bb28] (株)アスキーの配布する pTeX は Unicode を扱えませんが、pTeX を元に開発されている ptetex3 では対応が進んできています。さらに ttk 氏の開発している [[upTeX>TeX/upTeX]] ならば内部処理も Unicode 化されています(まだ完全ではありません)。 「Unicode を扱う」と聞くと他言語や難しい漢字を含んだものを想定してしまいますが、現在はそれらを直接扱うことはできません。他のツールを使って変換する必要があります。というのも、入力は Unicode でも、内部の処理には従来の日本語文字コードを用いているからです。 pTeX の Unicode(UTF-8)対応については土村さんのページを参考にしてください。 pTeX の Unicode (UTF-8)対応については土村さんのページを参考にしてください。 -[[漢字コード:http://tutimura.ath.cx/ptetex/?%B4%C1%BB%FA%A5%B3%A1%BC%A5%C9]] -[[UTF-8対応:http://tutimura.ath.cx/ptetex/?UTF-8%C2%D0%B1%FE]] -[[UTF-8対応(2):http://tutimura.ath.cx/ptetex/?UTF-8%C2%D0%B1%FE%282%29]] -[[UTF-8対応(3):http://tutimura.ath.cx/ptetex/?UTF-8%C2%D0%B1%FE%283%29]] TeX Q & A のページにも有益な情報があります。 -[[TeX Q&A 46042(Unicodeへの移行):http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/46042.html]] -[[TeX Q&A 46042 (Unicodeへの移行):http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/46042.html]] utf/otf パッケージでしか扱えない文字を utf/otf パッケージの記法に変換する elisp があります。 -[[TeX/Emacs]]