python - Python 中波兰语字符的 Unicode 编码

标签 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 编码,该编码对我来说看起来不错。由于我以前从未使用过拉丁语以外的任何语言,因此我想向 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/

相关文章:

python - 从多边形点Python创建一个填充的numpy数组

ruby - 如何打印 unicode 字符 U-1F4A9 'pile of poo' 表情符号

css - 负号内圈

python - yield 与返回的不同结果

python - 如何在 Python 中返回生成器

bash - 如何使用 bash 工具搜索非 ASCII 字符?

java - 打印 PDF 时反转阿拉伯语

c# - 在 C# 中解析 unicode 字符的字符串

python - 从嵌套字典创建文件树 | Python 2.7

python - Dask: Groupby 和 'First'/'Last' in agg