2012-01-30 2 views
4

バイナリデータをテキスト形式に変換する最良の方法は、base64エンコーディングを使用することです。 UTF-8は損失を招く可能性があります。しかし、私がこれを調査していたとき、Windows-1252エンコーディングは、その設計によってデータが失われるようには見えませんでした。バイナリデータをWindows-1252エンコーディングに変換するデータロスはありますか?

私はblog post hereにもっと多くの文脈を提供します。

最後に、バイナリデータをWindows-1252文字列として保存しない理由をいくつか示します。しかし、私が考慮しなかった実際のデータ損失シナリオがあるのであれば、私は興味があります。

+0

また、http://stackoverflow.com/questions/646974/is-there-a-standard-technique-for-packing-binary-data-into-a-utf-16-string –

答えて

0

バイナリデータには32未満の値を持つバイトが含まれる可能性があるので、バイナリデータを文字列に入れないでください。 これは文字列のエンコーディングとは関係ありません。

「UTF-8は損失がありますが、CP1252はありません」とは分かりません。しかし、私は知りたいとは思っていません。

+0

をご覧ください*彼のblogpost?彼はすべてのバイト0-255がWindows-1252でラウンドトリップできることを示す実験を行った。 –

+0

はい、私はそれが少しばかだと思った。 –

+1

私は彼の質問/ポストを、 "あなたは、奇妙な理由があっても現在、ウィンドウ1252を使って文字列に変換することでバイナリデータを保存しているシステムに遭遇します。"という行に沿って読んでいます。確かに正しい方法ではないこれはデータを実際に破損させることはないので、バグ修正の優先順位を最高レベルに設定する必要はありません(UTF-8が使用されていた場合、これは確かに破損を引き起こす可能性があるためです)この分析は正しいのですか? –

0

本当に、問題はあなたがCP1252binary dataを変換していないが、C#にあなたがUTF-16CP1252としてbinary dataを変換していることを考慮した場合のよりよい考えはありませんので、質問は希望CP1252ある - >UTF-16 - >CP1252保証なし多型突然変異。

.NETテキストエンコーダはUTF-16にベストフィットを行います - >それは大丈夫テストかもしれないが、あなたが途中でそのUTF-16文字列で何を行う可能性がでていない多くのシナリオがあり、あやふやで最高の音CP1252をそのそれでもデータの損失は保証されず、バイト配列よりもはるかに効率的ではありません。

関連する問題