我的目标是:
字符串如:
Bitte überprüfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und löschen Sie dann die tatsächlichen Dokumente.
转换为:
'Bitte \u00FCberpr\u00FCfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und l\u00F6schen Sie dann die tats\u00E4chlichen Dokumente.'
并以这种形式写入文件(UTF-8编码)。
最佳答案
另一种解决方案,不依赖于内置的 repr()
而是从头开始实现它:
orig = 'Bitte überprüfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und löschen Sie dann die tatsächlichen Dokumente.'
enc = re.sub('[^ -~]', lambda m: '\\u%04X' % ord(m[0]), orig)
print(enc)
区别:
- 仅使用
\u
编码,从不使用任何其他序列,而repr()
使用大约三分之一的字母表(例如,BEL 字符将被编码为\u0007
而不是\a
) - 指定的大写编码(
\u00FC
而不是\u00fc
) - 不处理平面 0 之外的 unicode 字符(可以很容易地扩展,给定这些应该如何表示的规范)
- 它不处理任何预先存在的
\u
序列,而repr()
将它们转换为\\u
;可以扩展,也许将\
编码为\u005C
:enc = re.sub(r'[^ -[\]-~]', lambda m: '\\u%04X' % ord(m[0]), orig)
关于python - 如何转义字符串中的unicode特殊字符并将其写入UTF编码文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68391790/