我正在使用Python 3.5,我试图获取一个字节文本块,可能包含或不包含特殊的中文字符并将其输出到文件中.它适用于不包含中文字符但在执行时会中断的条目.汉字总是一个人的名字,并且总是除了他们名字的英文拼写之外.该文本是JSON格式的,需要在我加载之前进行解码.解码似乎很好,并没有给我任何错误.当我尝试将解码后的文本写入文件时,它会给出以下错误消息:
UnicodeEncodeError:'charmap'编解码器无法编码位置14-18中的字符:字符映射到未定义
以下是我在执行任何操作之前获得的原始数据示例:
b' "isBulkRecipient": "false",\r\n "name": "Name in, English \xef'
b'\xab\x62\xb6\xe2\x15\x8a\x8b\x8a\xee\xab\x89\xcf\xbc\x8a",\r\n
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
recipientData = json.loads(recipientContent.decode('utf-8', 'ignore'))
recipientName = recipientData['signers'][0]['name']
pprint(recipientName)
with open('envelope recipient list.csv', 'a', newline='') as fp:
a = csv.writer(fp, delimiter=',')
csvData = [[recipientName]]
a.writerows(csvData)
Run Code Online (Sandbox Code Playgroud)
它recipientContent
是从API调用中获得的.我不需要在输出文件中包含中文字符.任何建议将不胜感激!
更新:
我一直在为每个中断的条目做一些手动变通办法,并且其他条目不包含中文特殊字符,但是从其他语言中获取,并打破了程序.特殊字符仅在名称字段中.因此,名称可能类似于"Ałex",它是普通字符和特殊字符的混合.在我解码包含此信息的字符串之前,我可以将其打印到屏幕上,它看起来像这样:b'name": "A\xc5ex",\r\n
但是在我将其解码为utf-8后,如果我尝试输出它会给我一个错误.错误消息是:UnicodeEncodeError: 'charmap' codec can't encode character 'u0142' in position 2- character maps to -undefined-
我查了一下\ u0142是什么,它是ł特殊角色.