我的波兰艺术家名字如下:
Żółte słonie
在我的数据集(json 文件)中,它已编码为:
\u017b\u00f3\u0142te S\u0142onie
我正在读取 json 并进行一些预处理并将输出写入文本文件。我收到以下错误:
UnicodeEncodeError: 'charmap' codec can't encode character u'\u017b' in position 0: character maps to <undefined>
我在线查找了波兰语字符的 Unicode 编码,该编码对我来说看起来不错。由于我以前从未使用过拉丁语以外的任何语言,因此我想向 SO 社区确认这一点。如果编码是正确的,那么为什么Python不处理它?</p>
谢谢, TM
最佳答案
我用Python 2.7做了简单的测试,似乎json
将对象类型从str
更改为unicode
。因此,在将其写入文本文件之前,您必须对此类字符串进行encode()
。
#!/usr/bin/env python
# -*- coding: utf8 -*-
import json
s = 'Żółte słonie'
print(type(s))
print(repr(s))
sd = json.dumps(s)
print(repr(sd))
s2 = json.loads(sd)
print(type(s2))
print(repr(s2))
f = open('out.txt', 'w')
try:
f.write(s2)
except UnicodeEncodeError:
print('UnicodeEncodeError, encoding data...')
f.write(s2.encode('UTF8'))
print('data encoded and saved')
f.close()
关于python - Python 中波兰语字符的 Unicode 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286663/