文字エンコーディング(?)などについて書かれてる文章で(?)「8ビット透過」とかありますがどのような意味でしょうか。

それから32ビット機から64ビット機になるとアプリが動かなくなるかもしれない、という話を耳にしたりしますがそのあたりの理屈と具体的にどのような対応が考えられるでしょうか。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/09/02 22:11:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:uehaj No.3

回答回数158ベストアンサー獲得回数15

ポイント100pt

【8ビット透過の問題】

1オクテット(=8ビット)のうち、7ビットでASCIIの範囲は表現できるため、余っ

た1ビット分を他の用途に転用しているシステムや環境があります。このよう

なシステムを「8ビット透過ではない」と呼びます。逆に「8ビット透過である」

システムとは、8ビットをちゃんと全てデータとして扱うことができ、処理の際

に別の用途に転用されたりしないシステムだということです。今となっては

「8ビット透過」は普通のシステムです。

8ビット目をデータの一部として使用するような文字エンコーディグ(Shift JIS、

EUCなど)のテキストは、8ビット透過ではない環境では正しく処理できないことに

なります。しかし、我々日本人が使う環境やシステムでは、8ビット目を使えるよ

うに対処されており、それによる問題に直面することは、多くの場合はありません。

しかし、インターネットメールの転送システムにおいては、そのような環境が

深刻な問題になります(なることがありました)。なぜなら、インターネット

メールは、バケツリレー方式で次々とメールサーバー間でメールが転送されて

いきますが、その経路の一つにそのような8ビット透過ではないシステムが1

つでも挟まっていれば、文字化けが生じることになるからです。

とはいえ、日本語でメールを送信する際に用いられる文字エンコーディングで

あるISO-2022-JPは、8ビット目を使用することの無いエンコーディングなので、

上記のようなシステムがメール転送の途中に挟まっていても問題ありません。

というより、上記のようなシステムがあっても正しく動作するように

IOS-2022-JPが設計され、選択されていると考えても良いでしょう。

同種の理由により、SubjectやヘッダなどではMIMEエンコーディングが用いられ

ます。

まとめると、8ビット透過かどうかは、過去のある時期確かに問題であったが、

今や、8ビット透過ではないシステムは限られているので、過去の問題となりつ

つある。UTF-8などの普及により、8ビット目を使わないシステムは論外となっ

てきているので今後この問題に直面する機会はさらに少なくなっていくであろ

うと思われる。

【32ビット機から64ビット機になることの問題】

さまざまな複雑な問題が絡み合っているので、綿密に説明することは私の手に

余りますので、簡単な例を挙げるだけにとどめます。

アプリの互換性の問題としては、一般には上位互換があるように作ってあるの

で、それは64ビットだから動く/動かないとか言う問題というより、その互換

機能の制限/限界と捉えた方が良いでしょう。OSとかコンパイラとかリンカと

かの機能の問題であり、「64ビットだから原理的に動かない」ということで

はないということです。

互換性とは少し離れて、一般的な話として32ビットと64ビットの処理の違い

に関して例を挙げてみます。

64ビットアドレッシングでは、1つのデータの「場所」を表すために、64ビッ

トのデータが必要になります。つまり32ビットと比べて、あるデータを指し示

すために倍のデータ量が必要になるのです。

32ビットアドレッシングでは、100万個のデータを保持するために100万

x(32bit=4byte)つまり4メガバイトの領域で事足りていたのが、64ビットアドレッ

シングでは単純計算で8メガバイトのメモリ領域が必要になります。メモリ仮想

化によって、「メモリが足りなくなって動かない」ということは起きないかも

しれませんが、性能劣化の可能性はあります。

とはいえ、一般には、メモリが沢山あるから64ビットCPUをつかうわけで、この

ぐらいのメモリ利用容量増加は気にならない、と思うかもしれませんが、CPUの

キャッシュような、限られた領域の場合は性能劣化に直結する可能性もあるで

しょう。巨大なメモリ容量を一度に使うようなアプリケーションではない限り、

64ビットモードで動作させる場合、一般には性能が劣化すると考えた方が良い

ようです。

id:dedara

大変ためになりました。uehajさんの他の回答も読み漁ってみたくなるほどです。

ありがとうございました。

2009/09/02 22:11:04

その他の回答2件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント60pt

【1】8ビット透過

現代ではUTF-8やJIS、ShiftJISなど色々な文字コード体系が存在しますが、

歴史的に古くから使われ、現代も生き続けているASCIIコードという、

規格があるのはご存知でしょうか?


ASCIIコードには、英語版キーボードにある文字に加えて、

通信制御用のコードも存在するのですが、

全部合わせても128種類しかないという非常にコンパクトなものです。

ASCII - Wikipedia

ASCII文字コード : IT用語辞典


128種類を2進数にすると7桁、すなわち7ビットで事足りるということであり、

初期の通信規約は当然ながら7ビットを基準に対応していた訳ですが、

時代とともに8ビットを扱う必要がでてきて改変や拡張がなされるようになりました。


すなわち8ビット透過とは「8ビットデータを扱う事が出来る」と同意となります。


【2】32ビット機と64ビット機

そもそもの問題として物理的に違うものとなりますので、

ソフトのほうもそれぞれに対応したものを使う必要性があり、

32bit版Windowsと64bit版Windowsといった具合に用意されてます。

(LinuxやMacを交ぜると話がややこしくなるので以下Windowsを対象とします。)


OSはそれぞれ用意するとして、次にアプリの場合を考えてみましょう。

64bit専用アプリが32bit版OSで動かないのは容易に判ると思いますが、

32bit専用アプリは64bit版OSでは動かないのでしょうか?


この段階での答えは「ひとまずNO」です。

現代の64bit版OSや64bit対応CPUは32bitにも対応しているためです。


ただし、本来64bitで動くべきところに32bitのものを混ぜて使おうというのですから、

全て32bitであっても何かしらの支障を来たしてきたこれまでの実績から考えると、

どこで噛み合わなくなるか知れたものではないという見解になるのはいたしかたなく、

「ひとまず」という言葉を入れてあります。


64bit化を進めるにあたっては、極力64bitで統一する方向を基準として、どうしても、

32bit専用アプリを織り交ぜる必要がある場合は、よくよくテストしながら使うという、

覚悟と準備と努力が必要という事になります。


64bit対応CPUも64bit版OSも数年前から利用は可能だったのですが、

普及してこなかったのは、覚悟と準備と努力の大変さに誰もが躊躇したためであり、

また、そこまでしなくても困る事がなかったためだと思われますが、

取り扱うデータやプログラムが日増しに巨大化の一途を辿る今、

いつまでも32bitではいられなくなってきたという所でしょうね。


以上、専門用語をなるべく使わないように説明したつもりですが、理解いただけましたか?


それとお願いなのですが、1回の質問投稿で複数の異なる質問をするのは、

次回からは遠慮していただきたく思います。関連性の深いものであれば致し方ないのですが、

「1回の質問で幾つも異なる質問をしても良いのだ」と皆が理解しはじめてしまうと、

質問するほうも回答するほうも混乱を来たす可能性がありますし、

そもそも複数回分の労力を1回で消耗してしまうのは回答者として苦です。

1回で質問して良い種類のものか、それとも分けるべきかという切り分けを、

行う事自体が難しいという場合もあるかもしれませんが、ご理解ご協力ください。

id:dedara

複数の質問は極力分けるようにしてなくそうと思います。

ありがとうございました。

2009/09/02 22:08:38
id:sirotugu40 No.2

回答回数449ベストアンサー獲得回数14

ポイント40pt

64ビットでの文字化けは設定しだいでなおるようです。

http://honamilk.net/archives/2004/02/windowsxp_64bit.html

*********

8ビット透過

http://www.cam.hi-ho.ne.jp/mendoxi/rfc/rfc1428j.html

英語圏では、7ビット+パリティチェックビット=8ビットで通信しているため、

8ビット文字コードがうまく通らないことがあります。

8ビット透過というのは、8ビット文字コードが問題なく通ることを示しています。

id:dedara

リンク先はなかなか面白そうなのであとでじっくり読んでみようと思います。

ありがとうございました。

2009/09/02 22:09:34
id:uehaj No.3

回答回数158ベストアンサー獲得回数15ここでベストアンサー

ポイント100pt

【8ビット透過の問題】

1オクテット(=8ビット)のうち、7ビットでASCIIの範囲は表現できるため、余っ

た1ビット分を他の用途に転用しているシステムや環境があります。このよう

なシステムを「8ビット透過ではない」と呼びます。逆に「8ビット透過である」

システムとは、8ビットをちゃんと全てデータとして扱うことができ、処理の際

に別の用途に転用されたりしないシステムだということです。今となっては

「8ビット透過」は普通のシステムです。

8ビット目をデータの一部として使用するような文字エンコーディグ(Shift JIS、

EUCなど)のテキストは、8ビット透過ではない環境では正しく処理できないことに

なります。しかし、我々日本人が使う環境やシステムでは、8ビット目を使えるよ

うに対処されており、それによる問題に直面することは、多くの場合はありません。

しかし、インターネットメールの転送システムにおいては、そのような環境が

深刻な問題になります(なることがありました)。なぜなら、インターネット

メールは、バケツリレー方式で次々とメールサーバー間でメールが転送されて

いきますが、その経路の一つにそのような8ビット透過ではないシステムが1

つでも挟まっていれば、文字化けが生じることになるからです。

とはいえ、日本語でメールを送信する際に用いられる文字エンコーディングで

あるISO-2022-JPは、8ビット目を使用することの無いエンコーディングなので、

上記のようなシステムがメール転送の途中に挟まっていても問題ありません。

というより、上記のようなシステムがあっても正しく動作するように

IOS-2022-JPが設計され、選択されていると考えても良いでしょう。

同種の理由により、SubjectやヘッダなどではMIMEエンコーディングが用いられ

ます。

まとめると、8ビット透過かどうかは、過去のある時期確かに問題であったが、

今や、8ビット透過ではないシステムは限られているので、過去の問題となりつ

つある。UTF-8などの普及により、8ビット目を使わないシステムは論外となっ

てきているので今後この問題に直面する機会はさらに少なくなっていくであろ

うと思われる。

【32ビット機から64ビット機になることの問題】

さまざまな複雑な問題が絡み合っているので、綿密に説明することは私の手に

余りますので、簡単な例を挙げるだけにとどめます。

アプリの互換性の問題としては、一般には上位互換があるように作ってあるの

で、それは64ビットだから動く/動かないとか言う問題というより、その互換

機能の制限/限界と捉えた方が良いでしょう。OSとかコンパイラとかリンカと

かの機能の問題であり、「64ビットだから原理的に動かない」ということで

はないということです。

互換性とは少し離れて、一般的な話として32ビットと64ビットの処理の違い

に関して例を挙げてみます。

64ビットアドレッシングでは、1つのデータの「場所」を表すために、64ビッ

トのデータが必要になります。つまり32ビットと比べて、あるデータを指し示

すために倍のデータ量が必要になるのです。

32ビットアドレッシングでは、100万個のデータを保持するために100万

x(32bit=4byte)つまり4メガバイトの領域で事足りていたのが、64ビットアドレッ

シングでは単純計算で8メガバイトのメモリ領域が必要になります。メモリ仮想

化によって、「メモリが足りなくなって動かない」ということは起きないかも

しれませんが、性能劣化の可能性はあります。

とはいえ、一般には、メモリが沢山あるから64ビットCPUをつかうわけで、この

ぐらいのメモリ利用容量増加は気にならない、と思うかもしれませんが、CPUの

キャッシュような、限られた領域の場合は性能劣化に直結する可能性もあるで

しょう。巨大なメモリ容量を一度に使うようなアプリケーションではない限り、

64ビットモードで動作させる場合、一般には性能が劣化すると考えた方が良い

ようです。

id:dedara

大変ためになりました。uehajさんの他の回答も読み漁ってみたくなるほどです。

ありがとうございました。

2009/09/02 22:11:04

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません