将符号转换为4位数字的unicode转义表示法及其反向操作
1) 我想知道怎么把一个符号转换成它的四位Unicode转义表示法,在Python 2.7里,比如把 "¥"
转换成 "\u00a5"
,该怎么做?
2) 我还想知道怎么把Unicode表示法转换回符号,在Windows 7/8系统上,比如把 "\u00a5"
转换成 "¥"
,该怎么做?
2 个回答
1
我发现用Python实现这个功能最可靠的方法是先把它解码成unicode,然后获取这个unicode字符的ord
值,再把这个值放进一个格式字符串里。代码看起来是这样的:
"\\u%04x" % ord("¥".decode("utf-8"))
还有一个方法叫unichr
,本来应该输出类似的结果,但在我的系统上,它显示的编码和提问者想要的不同。所以我觉得上面的方法是最不受平台限制的方式。
8
1) 这个需要用 \u
来转义吗?用 \x
可以吗?如果可以的话,可以试试 unicode_escape
编码。否则,你可以用下面的函数来转换:
def four_digit_escape(string):
return u''.join(char if 32 <= ord(char) <= 126 else u'\\u%04x'%ord(char) for char in string)
symbol = u"hello ¥"
print symbol.encode('unicode_escape')
print four_digit_escape(symbol)
2) 同样,你也可以使用 unicode_escape
编码:
encoded_symbol = '\\u00a5'
print encoded_symbol
print encoded_symbol.decode('unicode_escape')