UnicodeEncodeError:“ascii”编解码器无法对字符进行编码,尽管尝试了其他SO解决方案

2024-06-28 19:20:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将CSV文件转换为json文件。在这个过程中,当我试图写入json文件时,我得到一个错误,大约是unicode错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u06ec' in position 933: ordinal not in range(128)

我的代码:

^{pr2}$

行示例:

{'Country': 'UK', 'Title': '12345', 'Text': "  hi there  hi john i currently ", 'Week': 'week2', 'Page': 'homepage', 'Date': '1/3/16'}

Tags: 文件csvinjson过程错误asciiunicode
2条回答

不要转换为ASCII。

JSON本机处理unicode。 只需移除.encode("ascii", ...)部分。在

另外,您不需要在用于JSON的file对象上设置encoding,因为JSON已经正确地序列化了unicode。在

编辑我的代码以二进制形式读取CSV文件。然后它给了我另一个无效字节的问题,我通过将文本字符串转换为unicode来解决这个问题:

工作代码如下:

csvfile = open('my.csv', 'rb')
jsonfile = codecs.open('my.json',"w")

fieldnames = ("Title","Date","Text","Country","Page","Week")
reader = csv.DictReader(csvfile, fieldnames)
for row in reader:
    print row
    row['Text'] = unicode(row['Text'],errors='replace')

相关问题 更多 >