我正在尝试编写一个 python 实现,java.util.Properties
其要求将 unicode 字符以以下格式写入输出文件\u####
(如果您好奇,文档就在这里,尽管它对这个问题并不重要:http: //docs.oracle.com/javase/6/docs/api/java/util/Properties.html)
我基本上需要通过以下测试用例的东西
def my_encode(s):
# Magic
def my_decode(s):
# Magic
# Easy ones that are solved by .encode/.decode 'unicode_escape'
assert my_decode('\u2603') == u'☃'
assert my_encode(u'☃') == '\\u2603'
# This one also works with .decode('unicode_escape')
assert my_decode('\\u0081') == u'\x81'
# But this one does not quite produce what I want
assert my_encode(u'\u0081') == '\\u0081' # Instead produces '\\x81'
请注意,我已经尝试过unicode_escape
,它接近但并不能完全满足我想要的
我注意到simplejson
这种转换正确:
>> simplejson.dumps(u'\u0081')
'"\\u0081"'
但我宁愿避免:
- 重新发明轮子
- 对 simplejson 的输出进行一些粗略的子串化