首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在utf-7转换过程中看到的问题

在utf-7转换过程中看到的问题
EN

Stack Overflow用户
提问于 2017-03-09 18:43:56
回答 1查看 443关注 0票数 1

Python : 2.7

在继续之前,我需要转换为utf-7,所以我在python 2.7解释器中使用了下面的代码:

代码语言:javascript
复制
>>> mbox = u'한국의'
>>> mbox.encode('utf-7').replace(b"+", b"&").replace(b"/", b",")
'&1VytbcdY-'

当我在我的python脚本中使用相同的代码时,mbox的输出是b'&Ti1W,XaE',而不是b'&Ti1W,XaE-',也就是说,当作为脚本而不是解释器运行时,字符串末尾的"-“是缺失的。

代码语言:javascript
复制
    mbox = "b'" +  mbox + "'"
    print mbox
    mbox = mbox.encode('utf-7').replace(b"+", b"&").replace(b"/", b",")
    print mbox    

请建议一下。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-09 19:08:02

引用维基百科对UTF-7的描述

其他字符必须用UTF-16编码(因此,U+10000和更高的字符将被编码为代理)、大端字节(因此首先出现高阶位),然后在修改的Base64中编码。这些修改的Base64编码的UTF-16块的开始用一个+符号表示.结尾由修改后的Base64集合中的任何字符表示。如果修改后的Base64后的字符为a- (ASCII连字符-减号),则解码器将使用该字符并与下一个字符一起恢复解码。否则,将在base64之后恢复该字符的解码。

任何编码字符块都必须以非Base64 64字符结尾。如果字符串包含这样的字符,它将被使用,否则-将被添加到块的末尾。出于这个原因,您的第一个示例包含一个-。第二个示例不需要,因为'不是Base64字符集的一部分。

如果您的目的是创建一个创建有效的UTF-7字符串的Python文字,那么只需按不同的顺序进行操作。

代码语言:javascript
复制
mbox = b"b'" + mbox.encode('utf-7').replace(b"+", b"&").replace(b"/", b",") + b"'"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42703122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档