Python:2.7
我需要在继续之前转换为utf-7,所以我在python 2.7解释器中使用了以下代码:
>>> mbox = u'한국의'
>>> mbox.encode('utf-7').replace(b"+", b"&").replace(b"/", b",")
'&1VytbcdY-'
当我在我的python脚本中使用相同的代码,如下所示,mbox的输出是b'&Ti1W,XaE'
而不是b'&Ti1W,XaE-'
,即在作为脚本而不是作为脚本运行时,字符串末尾的“ - ”缺失解释
mbox = "b'" + mbox + "'"
print mbox
mbox = mbox.encode('utf-7').replace(b"+", b"&").replace(b"/", b",")
print mbox
请建议。
答案 0 :(得分:1)
引自Wikipedia's description of UTF-7:
其他字符必须以UTF-16编码(因此U + 10000和更高版本将编码为代理),big-endian(因此高阶位首先出现),然后在修改后的Base64中编码。这些修改后的Base64编码的UTF-16块的开头用+号表示。结束由未在修改的Base64集中的任何字符指示。如果修改后的Base64之后的字符是 - (ASCII连字符 - 减号),那么它将被解码器消耗,并且解码将继续使用下一个字符。否则,解码将以base64之后的字符重新开始。
任何编码字符块都必须以非Base64字符结尾。如果字符串包含这样的字符,则将使用它,否则-
将添加到块的末尾。出于这个原因,您的第一个示例包含-
。您的第二个示例不需要,因为'
不属于Base64 character set。
如果您的目的是创建一个创建有效UTF-7字符串的Python文字,只需按不同的顺序执行操作。
mbox = b"b'" + mbox.encode('utf-7').replace(b"+", b"&").replace(b"/", b",") + b"'"