繁体   English   中英

Unicode 波兰语字符编码 Python

[英]Unicode encoding for Polish characters in Python

我有一个波兰艺术家的名字如下:

Żółte słonie

在我的数据集(json 文件)中,它被编码为:

\u017b\u00f3\u0142te S\u0142onie

我正在阅读 json 并进行一些预处理并将 output 写入文本文件。 我收到以下错误:

UnicodeEncodeError: 'charmap' codec can't encode character u'\u017b' in position 0: character maps to <undefined>

我在网上查找了波兰语字符的 Unicode 编码,我觉得这个编码没问题。 由于我以前从未使用过 LATIN 以外的任何东西,所以我想与 SO 社区确认这一点。 如果编码是正确的,那么为什么 Python 没有处理它?

谢谢,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()

我遇到了同样的问题,我的解决方案是在 json.dump 方法调用中进行简单更改。 我已将 ensure_ascii 更改为 False(默认情况下为 True)。 我的方法:

def save_to_file(self):
    year, month = self.get_month_year_string()
    filename = "./files/project-" + year + "-" + month + ".json"
    with open(filename, "w", encoding="utf-8") as file:
        # file.write(self.project)
        json.dump(self.project, file, ensure_ascii=False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM