1-3-2.電子文字体系

📖この節では、次の項目について説明する。

  【たいけいcharacterキャラクター codeコード setセット)】

   🖈多彩すぎた文字コードセットと文字化け

  【Unicodeユニコード

   🖈Unicode策定の経緯

  【ろくほうしきformatフォーマット)】

   🖈Unicodeでの記録方式の種類

   🖈方式へんこうへいがい


 なお、この節では横文字があまりに多いため、縦組み表示を常用している人へも横組み表示をすいしょうする。



      †



📕【たいけい

 〈成り立ちを同一とする文字のひとまとまり〉転じて〈文字番号の割り当て規定のひとまとまり〉の意。

 [コードセット]と書いて同義。

 なお、しばしば略して{文字コード}と呼ばれるが、これは「文字番号」のそれとかぶるため、ぶんみゃくにしたがってがんばってかいしゃくしてください(


 文字体系とは通常、「ギリシア文字」「ピクトグラム」「簡体字」「くさび形文字」などの、文字種のグループを指すもの。

 しかし電算の文脈でう場合には、「コンピュータにて扱われる文字番号の集合」を指す。


   📍多彩すぎた文字コードセットと文字化け


 各言語ごとで使用する文字が異なるため、各言語ごとに別個の文字体系が乱立しており、日本語向けには「JISジス」「Shiftシフト-JISジス」「EUCイーユーシー-JPジェイピー」などが主に存在した。

 が、たとえば{愛}の文字番号はJISで「#𝟹𝟶𝟸𝟼」、Shift-JISで「#𝟾𝟾𝙰𝟺」、EUC-JPで「#𝙱𝟶𝙰𝟼」と、てんでバラバラ。

 このように、異なる文字体系のテキストデータには基本、互換性が無い。

 また、どの文字体系かという情報は、標準ではテキストファイルに記録されないため、プログラムが自力でこれを自動判定し、かつそれに成功しないといわゆる「け」が起きる。

 たとえばJISにおける{文字化け}というテキストを、Shift-JISだと誤認すれば{␛$BJ8;z2=$1}のような感じとなる。

 なお、{愛}の文字番号割り当てが見事にバラバラであるのを逆に利用して、テキストファイルの先頭部分にこの{愛}の字を含めておく事で自動判定の成功率を高める、という〝おまじない〟が有った。



      †



📕【Unicodeユニコード

 〈コンピュータで扱う文字をそうかつする文字体系のスーパーセット〉の意。


 〝世界各国の文字を全部ひとまとめに扱ってしまおう〟という、豪儀な文字体系。

 最大1,114,112文字が扱えるとされ、現時点で実際に定義されている文字数は約12万文字。


 乱立する文字コードセットにへきえきしたことで、統一化が図られたものである。

 そしてUnicodeはもうすでに十分普及しているため、「コンピュータ上における文字体系という概念」はそろそろすたれるかもしれない。


   📍Unicode策定の経緯


 これは当初、一文字あたり記録容量2バイトで事足りるとの見込みで、まずはそれを基準に策定されていた。

 ところが後になって全然足りない、つまり〝この字さすがに要らんでしょ〟と切り捨てたはずの文字の多くが、実は必要とされていたと判明したため、のちに4バイト基準に拡張された、という経緯が有る。

 前者を「UCS-2ユーシーエス・ツー」、後者を「UCS-4ユーシーエス・フォー」と呼ぶ(「UCS」は「Universalユニバーサル multiple-octetマルチプル・オクテット codedコーデッド Characterキャラクター Setセットとういつバイトごうたいけい」の略)。

 そのUCS-4のうち、UCS-2と重複する部分、つまり文字番号が2バイトで収まる部分を「UCS-2区間(#𝟶〜#𝙵𝙵𝙵𝙵)」、そこからはみ出る部分を「UCS-4区間(#𝟷𝟶𝟶𝟶𝟶〜#𝟷𝟶𝙵𝙵𝙵𝙵)」と呼ぶ事も有る。

 なおUCS-4においても、UCS-2区間に該当する文字は文字番号が変わらず、実務上で扱いに違いが出ないため、利用者的にはこの2つの用語は実質無視できる。



      †



📕【ろくほうしき

 〈あるデータについて実際にどのような形で記録するかを定めた方式〉の意。

 [formatフォーマット]と書いて同義。


 たとえば〝12345〟というデータについて、仮に{くぁwせdrftgyふじこlp}のようなデタラメな形で保存したとしても、次に読み込むときに〝12345〟に復元できればよい。

 だから実際にどのような形で記録するかは、利便性や処理速度などの都合によって、プログラム個々が様々に変える。


   📍Unicodeでの記録方式の種類


 Unicodeでも文字体系とは別途、決められた文字番号を実際にどういう形で記録するか、という記録方式フォーマットがいくつか規定されており、大別すれば次の4種類になる。


  • UTF-32ユーティーエフ・さんじゅうに

   ◦4バイトのUCS-4文字番号を4バイト(32ビット)ままで記録


  • UTF-16ユーティーエフ・じゅうろく

   ◦2バイトのUCS-2区間文字番号を2バイト(16ビット)ままで記録

   ◦それ以外の文字番号は特別な「サロゲート文字」を2文字使って記録


  • UTF-8ユーティーエフ・はち

   ◦「7ビット文字(半角英数字など)」の文字番号を1バイト(8ビット)単位で記録

   ◦それ以外の文字番号は特別方式で複数バイトを連結して記録


  • UTF-7ユーティーエフ・ななUTF-EBCDICユーティーエフ・エビスディックなど:

   ◦特殊環境仕様のUTF-8ライクな記録方式


 なお「UTF」は「Unicodeユニコード Transformationトランスフォーメーション FormatフォーマットUnicodeヨニコードへんかんろくほうしき」の意。

 ただし最後のものは特殊環境向けであるため、一般的には3種類、とも言える。

 ほか、細かい話をすれば「UTF-16LE」「UTF-16BE」なども有るが、これらの事は忘れたほうがいい。


 ※拝啓 ITerアイティーヤー各位、エンドユーザに裏舞台endianなんか意識させんなや、それともお前らも論理記録ファイルレコード物理記録ディスクレコードの差異吸収を全部自前でやってみるかや 敬具


 多用される文字が、本来それのみで運用しようとしたUCS-2区間に、当然ながら集中している。

 つまり常用には、一文字あたり2バイト単位での記録で十分耐えうるので、4バイト単位のUTF-32だと記録容量的にムダが多い。

 よって普通は、UTF-16かUTF-8で記録する。


   📍方式へんこうへいがい


 一般に流通しているテキストデータの多くがUTF-8なので、それにならって〝テキストファイルはUTF-8フォーマットで保存しておくのが無難〟と


 ただしUTF-8は、〝欧米での英数字主体のテキストデータを、再変換なしにUnicodeテキストとして通用させる〟というコンセプトの記録方式フォーマット

 だから「7ビット文字(半角英数字など)」オンリーのテキストデータは、一般にローカル文字体系と同一の形になる。

 「ローカルたいけい」とは〈オペレーティングシステム環境が標準と定める文字体系〉の事で、それがたとえば『Windowsウィンドウズ』の日本語環境ならば、Shift-JIS。

 すると結果、「UFT-8で保存したはずのファイルを閉じてからまた開くと、テキストエディタの編集モードがShift-JISになる」という事が起こってくる。

 このとき、それに気付かずに編集を続けると、その編集結果のShift-JISデータをUFT-8データのつもりで人に引き渡してしまう、といった事故が発生する。


 これがUTF-16やUTF-32であれば、ファイルデータ先頭に「BOMポムByteバイト Orderオーダー Markマーク:バイトじゅんひょう〉」という特殊なサインが付加される関係上、そういった問題は発生しない。

 そしてそもそもUTF-8は、「7ビット文字(半角英数字など)」以外を記述すると、データ量がかさむ。

 具体的には、UTF-16であれば2バイトで済むはずの日本語常用文字が、3バイトに膨れ上がる。

 以上から、つまりUTF-8で喜ぶのは欧米人に限定され、日本語環境ならば実のところ、UFT-16のほうが難は少ない。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る