2

私のテキストエディタでは、Ansi、UTF-8、UTF-8(BOMなし)、UTF-16LE、およびUTF-16BEのいくつかの異なる文字形式でコーディングできます。

それらの違いは何ですか?

一般的に最良のフォーマットと見なされているものは何ですか(違いが生じる場合はPythonを使用しています)?

4

3 に答える 3

8
  • 「Ansi」は誤称であり、通常、現在のプラットフォーム(通常はWindows-1252である「西部」のWindowsインストール)のデフォルトである8ビットエンコーディングを指します。少数の文字セット(最大256文字)のみをサポートします。
  • UTF-8は、すべてのUnicode文字を格納できる可変長のASCII互換エンコーディングです。これは、すべてのUnicode文字をサポートする必要がある西洋のテキストにはかなり良い選択であり、一般的な場合には非常に実行可能な選択です。
  • 「UTF-8(BOMなし)」は、Windowsがバイト順マーカーを記述せずにUTF-8を使用するために付けた名前です。BOMはUTF-8には必要ないため、使用しないでください。これが正しい選択です(他のほとんどの人は、このバージョンを単に「UTF-8」と呼んでいます!)。
  • UTF-16LEおよびUTF-16BEは、 UTF-16エンコーディングのリトルエンディアンおよびビッグエンディアンバージョンです。UTF-8と同様に、UTF-16は任意のUnicode文字を表すことができますが、ASCII互換ではありません。

一般的に言えば、UTF-8は全体的に優れた選択肢であり、幅広い互換性があります(BOMを記述しないように注意してください。これは、他のほとんどのソフトウェアが期待していることです)。

テキストの大部分が非ASCII文字で構成されている場合(つまり、基本ラテンアルファベットを使用していない場合)、UTF-16はより少ないスペースを使用できます。

「Ansi」は、Unicodeをサポートしていないレガシーアプリケーションと対話する必要がある場合にのみ使用してください。

エンコーディングに関する重要なことは、データに加えて通信する必要があるメタデータであるということです。これは、テキストとして正しく解釈するには、バイトストリームのエンコーディングを知っている必要があることを意味します。したがって、使用される実際のエンコーディングを文書化するフォーマットを使用するか(XMLはここでの代表的な例です) 特定のコンテキストで単一のエンコーディングを標準化し、それのみを使用する必要があります。

たとえば、ソフトウェアプロジェクトを開始する場合は、すべてのソースコードが特定のエンコーディングであるように指定して(ここでもUTF-8をお勧めします)、それを維持できます。

特にPythonファイルの場合、ソースファイルのエンコーディングを指定する方法があります

于 2010-06-10T08:42:31.977 に答える
3

ここに。「ANSI」は通常CP1252であることに注意してください。

于 2010-06-10T08:35:53.003 に答える
3

UTF-8 No BOMを使用すると、おそらく最大のユーティリティが得られます。ANSIとASCIIが存在することを忘れてください、それらは非推奨の恐竜です。

于 2010-06-10T08:37:49.337 に答える