在这里提供的所有编码中,http://docs.python.org/library/codecs.html,我应该使用哪种编码将二进制数据解码为unicode,而不会在我将其编码回字符串时损坏?
我用过raw_unicode_data,但它不起作用。
例如:我在帖子中上传图片(但不是作为文件附件)。Django使用utf-8将POST数据转换为unicode。但是,当从unicode转换回字符串(同样使用utf-8)时,数据会损坏。我使用了raw_unicode_data,也发生了同样的事情(尽管这次只有几个字节)。我应该使用哪种编码,以便解码和编码步骤不会损坏数据。
发布于 2011-02-24 02:07:13
“二进制数据”不是文本,因此将其转换为unicode是没有意义的。如果二进制数据中嵌入了文本,则首先将其提取出来,然后使用数据格式规范中给出的编码进行解码。
发布于 2011-02-24 02:15:58
如果您想发布二进制数据,请使用base64编码。
http://docs.python.org/library/base64.html
发布于 2011-02-24 11:10:07
正如其他人已经说过的,你的问题不是特别清楚。如果您希望通过文本通道(如POST)收集二进制数据,则base64是正确的格式,可用于客户端和服务器中的适当数据转换操作(binary data -> base64 text -> pass over text channel -> base64 text -> binary data)。
或者,如果您希望容忍不正确编码的文本(例如,Python3尝试对某些接口执行此操作,如文件路径和环境变量),则Python3.1及更高版本提供了surrogatescape错误处理程序,它会将无效值转换为无效的可读文本格式,但允许在编码回字节时忠实地重新创建原始二进制数据。
https://stackoverflow.com/questions/5094919
复制相似问题