1 / 17

コンピュータが文字を覚えるとは ― 文字コード ―

コンピュータが文字を覚えるとは ― 文字コード ―. 科学・技術の世界「日本語とコンピューター」 担当 小野芳彦(文学研究科). Characters are numbered. コンピュータは数しか計算しないので、文字をあつかう場合も整数に直して処理する。文字を番号(符号)に直すことを「符号化する」という。 Computers send a message not as a string 文 字 ⇒ but as a sequence 149, 182, 142, 154

kasia
Download Presentation

コンピュータが文字を覚えるとは ― 文字コード ―

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. コンピュータが文字を覚えるとは―文字コード―コンピュータが文字を覚えるとは―文字コード― 科学・技術の世界「日本語とコンピューター」 担当 小野芳彦(文学研究科)

  2. Characters are numbered コンピュータは数しか計算しないので、文字をあつかう場合も整数に直して処理する。文字を番号(符号)に直すことを「符号化する」という。 • Computers send a message not as a string 文 字 ⇒but as a sequence 149, 182, 142, 154 「文字」という語句は、コンピュータにとっては「149 182 142 154」という番号の列である。電子メールで文章を送るという場合でも、コンピュータは実は番号の列を送っている。

  3. Characters are numbered • Character code = Transliteration Table between characters and numbers 文字コード(セット)とは文字を番号に直し、番号を文字に直すための対応表である。 • Computer communication needs an equivalent character code in both side. 受け手側の対応表が送り手側の対応表と異なっていると、番号を元の文字にもどすことができず、意味不明の文字の羅列になる。

  4. History of Character Codes • ASCII:1962 1962年に、アメリカのJISにあたるANSIという団体がASCII(アスキーと読む)という情報交換用文字コードを制定した。ASCIIは7bit(0から127までの128の数字)で文字をあらわすが、最初の32個は制御符号(「改行」や「処理中止」、「送信終了」)に使い、残りの96文字のうち、32と127を除いた33~126までの94の番号に「a」、「b」、「1」、「2」、「!」などの文字を配置する。ASCIIは他のマシンとの情報交換に用いるコードだが、設計がすぐれていたので、英語圏では内部処理にも使われるようになった。

  5. Examples  たとえば、Hello!というあいさつは、コンピュータの内部では2進数(1と 0であらわされるbinary number)であらわされた番号の集まりである(a)。  今、Hallo! と間違えてタイプした(b)としても、スペルチェッカーの辞書には(a)に示した正しい番号が記録されているので、それと照合し、2番目の番号「1100001」が間違っていることを発見し、「1100101」にしろと教える。 1001000 :H 1100101 :e 1101100 :l 1101100 :l 1101111 :o 0100001 :! 1001000 1100001 1101100 1101100 1101111 0100001 0000000 0000100 0000000 0000000 0000000 0000000 (a) - (b) =

  6. コードポイント • 「1100001」が「a」をあらわし、「1100101」が「e」をあらわすというのは、コンピュータを作った人間が勝手に決めたことで、根拠はない。 • どの番号がどの文字をあらわすかは約束にすぎず、これが文字コードの本質である。 • 文字をあらわす番号のことをコードポイントということもある。 • コードポイントの一セットがコードである。

  7. ISO 646:1967 • International Standard ⊃ National Standards ASCIIを元にISO 646という規格作成 • 各国語にアルファベットを拡張 フランス語でÇやâ、ドイツ語でëや'öのような修飾つきアルファベットが必要 ISO 646のいくつかのコードポイントをその国固有の文字に換えてよい • 多国語環境でのISO646 一部の文字を入れ換えた各国語版のISO 646は、その国の中だけで使うにはいいが、多国語環境では文字化けが起こる。 フランス語版「Ça est là.」 ドイツ語版「Öa est l§.」 日本語版「\a est l@.」

  8. 文字コード識別番号 • Each National Character Code has an ID number ISOでは各々の文字コードに識別番号をあたえ、その文書がなんの文字コード(コード表)で符号化されているかを明示するようにした。 文書の最初や、言語(=用字)が変わる位置にコード表の識別番号を置く ここからはなんというコード表を使っているかを明示 →文字化けが解決する。

  9. 多文字コードの規格ISO 2022 • さまざまなコード表を切り換えて情報交換する • 個々の文字コードが同一構造をとってる。 • 構造と切り換え方法を定めたのがISO 2022 • 例:インドのIS 13194 デーヴァナーガリー文字、タミル文字、ベンガル文字等々、インドで公用文字として認められているのは十の文字セット ISO 2022の構造に流しこむ。 • 世界の文字コードで国家規格となっているもののほとんどはISO 2022にもとづいて作られている。

  10. JIS X 0201:1996(JIS C 6220-1969) • 日本のJIS X 0201はISO 646の日本版であるアルファベットと、カタカナ文字セットをISO 2022で符号化した文字コードの二本立て。 • アルファベットでは「\」を「\」に置きかえている。 • カタカナはいわゆる「半角カナ」であり濁音・半濁音記号が独立している。(ここでは文字数と記憶量は一致しないが、文字間隔の不ぞろいに我慢さえすれば実用的) • 8bit実装ではコードポイントの共用はない。 • 文字数と記憶量とが一致する。

  11. 漢字をコード化 • 1970年代にはいると、コンピュータの進歩によって、漢字を使えるようにしようという試みがあちこちではじまった。 • 新聞社、生命保険会社など、大型コンピュータを導入した多くの会社が、業務内容に応じた独自の漢字コードの制定に着手していた。 • 漢字は諸橋大漢和で約5万字、大正期から進められていた漢字制限論の成果というべき1949年の当用漢字表でも1850字であるから、7bit(128文字種)や8bit(256文字種)でおさまるはずがなかった。

  12. JIS X 0208:1978 (JIS C 6226-1978) • ISO 2022では7bitないし8bitを複数組みあわせて、巨大な文字セットを符号化できる • JIS基本漢字は、文字セットの段階では「区点番号」と呼ばれる1~94の番号を二つ組みあわせることで、漢字一文字をあらわしている。 • 94×94=8836字までの文字を収録できるが、外字エリアや、将来の拡張のためのエリアがあけてあるので、実際には6879字(漢字は6349字)しか収録していない。

  13. 実装法 の混乱 • 最初、7bitで実装したため、ASCII(JISローマ字)やカタカナとは共存できなかった。 • シフトJISと呼ばれる実装法が私的に開発され、それが、マイクロソフト社に採用された。 • JIS文字の頭6ビット分がASCIIとカタカナが割り当てられていないコードポイントにシフトされている

  14. EUC • ASCII(JISローマ字)とはコードポイントが重ならない実装法 • 漢字コードの一部をローマ字と誤認することがない • 拡張で最大4つの文字セットを同時に使える。 • Unix Macで一時的に使われたが、シフトJISの普及に及ばなかった

  15. シフトJIS→Unicode • シフトJISは日本語専用の内部コードとしてなら実用的設計である。 • 内部コードとデータ通信にシフトJISを使うことにしたために、混乱が生まれた。 • 他の文字コードと区別できないので、日本ではフランス語やドイツ語、中国語、韓国語が扱えない状態がつづいた。 • 世界の国々で共通に使える内部コードが必要とされた。

  16. Unicode • ユニコード・コンソーシアムという業界団体が開発 • 大きなコード表を一つ作り、その中に世界各国の文字をまとめて詰めこむ。 • 実装法としてUTF-8とUTF-16がある。 • 欧米はUTF-8で実装(8ビットの世界) • 中日韓(CJK)もUTF-8の第2面(8ビットと16ビットの混在世界)を望むが、3国の合計は65536字を超えてしまう。 • 形の同じ字(漢字)は共通のコードポイントに割り当てれば16ビットにおさまる。(全米の図書館の漢字処理の方式にならう) • ユニファイ作業はかなりの困難を伴った • 中国の簡体字は繁体字とユニファイしない。 • 韓国の漢字は別扱い。 (UCS-2から)

  17. まとめ • コンピュータに文字(特に漢字)を扱わせるにあたっては、利用者の熱意(圧力?)が原動力として大いにはたらいていた。 • エンジニアはその時々の技術水準で文字を選び取り、情報処理用のコードを決めてきた • 文字の専門家の発言力は強くなかった。 • 文字コードの歴史は、混乱が混乱をよび、それを収集する歴史であった。

More Related