Mil*_*ano 2 python unicode encoding
此代码应该将一些文本写入文件。当我尝试将文本写入控制台时,一切正常。但是当我尝试将文本写入文件时,出现 UnicodeEncodeError。我知道,这是一个常见的问题,可以使用正确的解码或编码来解决,但我尝试过它仍然得到相同的 UnicodeEncodeError。我究竟做错了什么?
我附上了一个例子。
print "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)".decode("utf-8")%(dict.get('name'),dict.get('description'),dict.get('ico'),dict.get('city'),dict.get('ulCislo'),dict.get('psc'),dict.get('weby'),dict.get('telefony'),dict.get('mobily'),dict.get('faxy'),dict.get('emaily'),dict.get('dic'),dict.get('ic_dph'),dict.get('kategorie')[0],dict.get('kategorie')[1],dict.get('kategorie')[2])
Run Code Online (Sandbox Code Playgroud)
(StarBuy sro、Inzertujte 的照片、auto-moto、oble?enie、reality、prácu、zvieratá、starožitnosti、dovolenky、nábytok、všetko pre deti、obuv、stroj....
with open("test.txt","wb") as f:
f.write("(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)".decode("utf-8")%(dict.get('name'),dict.get('description'),dict.get('ico'),dict.get('city'),dict.get('ulCislo'),dict.get('psc'),dict.get('weby'),dict.get('telefony'),dict.get('mobily'),dict.get('faxy'),dict.get('emaily'),dict.get('dic'),dict.get('ic_dph'),dict.get('kategorie')[0],dict.get('kategorie')[1],dict.get('kategorie')[2]))
Run Code Online (Sandbox Code Playgroud)
UnicodeEncodeError: 'ascii' 编解码器无法对位置 50 中的字符 u'\u010d' 进行编码:序号不在范围内 (128)
问题可能出在哪里?
要将 Unicode 文本写入文件,您可以使用io.open()函数:
#!/usr/bin/env python
from io import open
with open('utf8.txt', 'w', encoding='utf-8') as file:
file.write(u'\u010d')
Run Code Online (Sandbox Code Playgroud)
它是 Python 3 的默认设置。
注意:'b'如果要写入文本,则不应使用二进制文件模式 ( )。
# coding: utf8定义源代码编码与它无关。
如果您看到sys.setdefaultencoding()外部site.py或 Python 测试;假设代码坏了。