sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

文字コード超研究 8章

文字コード「超」研究 改訂第2版

文字コード「超」研究 改訂第2版

前回の続き

8章 ASCII

ASCIIのあれこれ。0x00-0x1fの制御文字の詳細や、 紙テープでの情報の記録、改行コードの違い等。

改行コード

個人的にはCRとLFを両方使うMSスタイルが一番しっくり来るのですが、OSによって違いがあるということだけ覚えておけばOK。処理的には、先頭から1文字ずつ読んで行って0x0aがあったらそれで復改、0x0dでその次が0x0aなら2バイトで復改、0x0dでその次が0x0a以外なら0x0dのみで復改とするのがお約束でしょう。

制御文字と規格

制御文字が様々な規格でどのように定義されているか。

  • ISO 6429 - 0x00がNUL, 0x01がSOH…のように、種類と名前が決められているが、実際の挙動は定義されていない。(0x0dや0x0a,0x09のようになんとなく決まっている物もあるが、挙動が明確に定義されているわけではない)
  • ISO 2022 - 0x1bで始まるエスケープシーケンスによる文字コード表の指定方法と、0x0e(SO)/0x0f(SI)による切替が定義されている
  • RFC 822 - 電子メールに関するRFC(の大元)。0x0d 0x0aが改行を表すということが定められている。
  • RFC 2822 - RFC 822の改訂版。 電子メールで0x00を使用してはならないと定められている。
  • RFC 2046 - MIMEに関するRFC。0x0cが改ページ、0x09が水平タプがデファクトスタンダードとなっていると明言されている。
  • VT100 - DEC社のディスプレイ端末の名前。カーソル移動や画面クリア等のエスケープシーケンスの挙動の標準となっている。

ISO 646の違い

ASCIIとの違いは以下。西ヨーロッパ諸国もISO 646の各国版ではなく、ISO 8859-1が使われる事が多い。

  • 0x00-0x1fの制御文字はISO 6429で定める
  • 0x23は#(NUMBER SIGN)か£(POUND SIGN)のいずれかを各国の国情で入れ替えて使う
  • 0x24は$(DOLLAR SIGN)か(CURRENCY SIGN)。
  • 0x40,0x5b-0x5e,0x60,0x7b-0x7eは国情で入れ替えて使える

記号の呼び方

欧米とで呼び方に差があるものを列挙

  • # - ナンバー、欧米ではパウンド
  • ♯ - シャープ
  • & - アンパーサンド
  • ’ - シングルクォート
  • () - 丸括弧、英語ではパレンセスィス(parenthesis)
  • * - アスタリスク、欧米ではスター
  • − - ハイフン、欧米ではダッシュ
  • . - ピリオド、欧米ではドット
  • <> - 小なり大なり、欧米でもレスザングレーターザン。アングルブラケットとも言う。
  • @ - アット
  • [] - ブラケット、スクエアブラケット
  • \ - バックスラッシュ
  • ^ - キャレット
  • _ - アンダーライン、アンダースコア、アンダーバー
  • ` - バッククォート
  • {} - カーリブレース
  • | - 縦バー、欧米ではバー
  • ~ - チルダ、チルド、ティルドゥ

例によって最後のperlのコーディング例の部分はタイトルだけ確認して読み飛ばした。 7bitのASCIIひとつとっても知らないことがたくさん。特に記号の読み方は勉強になった。

次回へ続く