我的波兰艺术家姓名如下:
Żół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编码,编码看起来很好。由于我之前从未使用过LATIN以外的任何东西,我想与SO社区确认一下。如果编码是正确的,那么Python为什么不处理呢?
谢谢, TM
答案 0 :(得分:2)
我使用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()