为 lzma 压缩编码一个 unicode 字符串
encoding a unicode string for lzma compression
我有一个 Unicode 字符串 - Python 2.7.
我今天也很头疼 – 不是由 Unicode 引起的真正的头疼 – 并且无法像我需要的那样保持对问题的关注。在花粉数量下降之前,我比思考者更愚蠢。
我需要使用 backports.lzma
压缩我的 'string'。有时我会得到一个错误,因为 'string' 不是一个 ASCII 兼容的 String
而是一个使用一些当前未知字符集(可能是 UTF-8 但不能保证)的 Unicode
对象。 lzma.compress
想要 String
或 bytes()
兼容对象。
此时我的代码中不一定有 unicode 的字符编码。我只知道它是一个 unicode 对象。通常在类似的情况下,我知道编码并且可以采取适当的行动。我通常也不关心在转码中丢失一两个字符。这次我在乎了。
这让我想到了几个问题:
• 是否有可供选择的安全编码,其大小也会稍微小一些(对于大多数 utf-8 文档)?
• 我是否需要担心解码与我压缩的早期文档的向后兼容性?我没有完全阅读 lzma
文档(我的错)并且没有意识到它需要 String
.
压缩操作的是字节,而不是文本,所以它自然需要一个 str
(2.x) 或 bytes
(3.x) 对象。您无需关心内部文本表示是什么,因为您将自己 encode/decode 文本。
- Is there a safe encoding to choose that will also be somewhat minimal in size (for a majority of utf-8 docs)?
没有。只需编码为 UTF-8 即可完成。
- Do I need to worry about backwards compatibility on decoding vs the earlier documents I've compressed? I did not fully read the lzma docs (my bad) and didn't realize it needed a String.
如果您只压缩了 ASCII 文本,那么您可以毫无问题地解码为 UTF-8,因为 UTF-8 和 ASCII 对 ASCII 文本的编码方式完全相同。
我有一个 Unicode 字符串 - Python 2.7.
我今天也很头疼 – 不是由 Unicode 引起的真正的头疼 – 并且无法像我需要的那样保持对问题的关注。在花粉数量下降之前,我比思考者更愚蠢。
我需要使用 backports.lzma
压缩我的 'string'。有时我会得到一个错误,因为 'string' 不是一个 ASCII 兼容的 String
而是一个使用一些当前未知字符集(可能是 UTF-8 但不能保证)的 Unicode
对象。 lzma.compress
想要 String
或 bytes()
兼容对象。
此时我的代码中不一定有 unicode 的字符编码。我只知道它是一个 unicode 对象。通常在类似的情况下,我知道编码并且可以采取适当的行动。我通常也不关心在转码中丢失一两个字符。这次我在乎了。
这让我想到了几个问题:
• 是否有可供选择的安全编码,其大小也会稍微小一些(对于大多数 utf-8 文档)?
• 我是否需要担心解码与我压缩的早期文档的向后兼容性?我没有完全阅读 lzma
文档(我的错)并且没有意识到它需要 String
.
压缩操作的是字节,而不是文本,所以它自然需要一个 str
(2.x) 或 bytes
(3.x) 对象。您无需关心内部文本表示是什么,因为您将自己 encode/decode 文本。
- Is there a safe encoding to choose that will also be somewhat minimal in size (for a majority of utf-8 docs)?
没有。只需编码为 UTF-8 即可完成。
- Do I need to worry about backwards compatibility on decoding vs the earlier documents I've compressed? I did not fully read the lzma docs (my bad) and didn't realize it needed a String.
如果您只压缩了 ASCII 文本,那么您可以毫无问题地解码为 UTF-8,因为 UTF-8 和 ASCII 对 ASCII 文本的编码方式完全相同。