4

codecs.open()言及のためのドキュメント

バイナリ モードが指定されていない場合でも、ファイルは常にバイナリ モードで開かれます。これは、8 ビット値を使用したエンコードによるデータ損失を避けるために行われます。

ファイルにテキストモードを使用すると、どのように「データ損失」が発生する可能性がありますか? ファイルをテキスト モードで開くと、バイトが 7 ビットに切り捨てられるように思えますが、ドキュメントにはこれについての言及が見つかりません。テキスト モードは、改行を変換する方法としてのみ説明されており、潜在的なデータについては言及されていません。損失。では、ドキュメントは何をcodecs.open()参照していますか?

PS : プラットフォーム依存の改行エンコーディングへの自動改行変換には注意が必要であることは理解できますが、問題は 8 ビット エンコーディングに固有のものについてです。エンコーディングが 8 ビットであるか 7 ビットであるかに関係なく、一部のエンコーディングのみが自動改行変換と互換性があると推測していました。では、なぜcodecs.open()のドキュメントで 8 ビット エンコーディングが選択されているのでしょうか。

4

1 に答える 1

5

それらが意味することは、一部のエンコーディングが少なくともいくつかのバイトで8ビットすべてを使用するため、256個すべての値が可能になるということだと思います(特に、CRまたはLFを意味しない0x0Aまたは0x0Dを取得することが可能です)。

対照的に、UTF-8 ファイルでは、CR および LF 文字 (および 0x80 未満の他のすべての文字) は常にそれ自体に変換されます。他の文字のエンコーディングの一部として表示することはできません。

于 2011-05-17T20:35:24.987 に答える