latin-1(別名ISO-8859-1)文字セットはUnicode文字セットの最低256のコードポイントとして埋め込まれているため、変換は簡単ではありませんが、一般的なUTFエンコーディングの変換関数のみを含むData.Text.Encoding
にはlatin-1エンコーディング変換関数はありませんでした。Latin1でエンコードされたData.ByteStringとData.Textの間の変換
Data.ByteString
の値をlatin-1表現でエンコードした値とData.Text
の値の間で変換することをお勧めしますか、または効率的な方法はありますか?
ところで、「latin-1文字セットはUnicode文字セットの最低256コードポイントとして埋め込まれているため、変換は些細なものだと思います」というのは不当です。 1つのコードポイント・ストリームを2つの異なるエンコーディングでエンコードした結果のバイトストリームが、互いに些細な関係を持つことが予想される理由はありません。 –
@DanielWagner:一般的なケースでは、これを期待するべきではないことを認識しています(例えば、 'Data.Text'がutf8を内部Unicode表現として使用した場合など)。しかし、現在のバージョンの' Data.Text'ライブラリはUTF16表現を使用しています。latin1からの変換は、実際には、各ラテン1オクテットの後に(UTF16LEかUTF16BEが必要かに応じて)ゼロオクテットを挿入するという些細な変換です。 – hvr