将符号转换为4位数字的unicode转义表示法及其反向操作

5 投票
2 回答
1879 浏览
提问于 2025-04-18 15:17

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')

撰写回答