Python中波兰字符的Unicode编码

时间:2014-04-25 07:22:44

标签: python unicode

我的波兰艺术家姓名如下:

Żół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

1 个答案:

答案 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()