Python 3 字符编码问题
Python 3 character encoding issue
我正在从 MySQL // Maria DB 中选择值,其中包含带 latin1_swedish_ci 排序规则的 latin1 字符集。可能有来自不同欧洲语言的字符,如西班牙语 ñ、德语 ä 或挪威语 ø。
我通过
获取数据
#!/usr/bin/env python3
# coding: utf-8
...
sql.execute("SELECT name FROM myTab")
for row in sql
print(row[0])
出现错误信息:
UnicodeEncodeError: 'ascii' 编解码器无法编码字符 '\xf1'
好的,我已将打印更改为
print(str(row[0].encode('utf8')))
结果如下所示:
b'\xc3\xb1'
我看了这个 Working with utf-8 encoding in Python source 但我已经声明了 header。 decode('utf8').encode('cp1250')
也无济于事
Python3 尝试根据您的区域设置自动解码此字符串。如果您的语言环境与字符串的编码不匹配,您会得到乱码文本,或者根本不起作用。您可以强制尝试使用您的语言环境对其进行编码,然后解码为 cp1252
(这似乎是字符串上的编码)。
print(row[0].encode('latin-1').decode('cp1252'))
好的编码问题终于解决了。 Coldspeed 用 loacle 给了一个重要的 hind。因此,所有的荣誉都给他!不幸的是,这并不容易。
我找到了解决问题的解决方法。
import sys
sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
解决方案来自Jack O'Connor. posted in this answer:
我正在从 MySQL // Maria DB 中选择值,其中包含带 latin1_swedish_ci 排序规则的 latin1 字符集。可能有来自不同欧洲语言的字符,如西班牙语 ñ、德语 ä 或挪威语 ø。
我通过
获取数据#!/usr/bin/env python3
# coding: utf-8
...
sql.execute("SELECT name FROM myTab")
for row in sql
print(row[0])
出现错误信息: UnicodeEncodeError: 'ascii' 编解码器无法编码字符 '\xf1' 好的,我已将打印更改为
print(str(row[0].encode('utf8')))
结果如下所示:
b'\xc3\xb1'
我看了这个 Working with utf-8 encoding in Python source 但我已经声明了 header。 decode('utf8').encode('cp1250')
也无济于事
Python3 尝试根据您的区域设置自动解码此字符串。如果您的语言环境与字符串的编码不匹配,您会得到乱码文本,或者根本不起作用。您可以强制尝试使用您的语言环境对其进行编码,然后解码为 cp1252
(这似乎是字符串上的编码)。
print(row[0].encode('latin-1').decode('cp1252'))
好的编码问题终于解决了。 Coldspeed 用 loacle 给了一个重要的 hind。因此,所有的荣誉都给他!不幸的是,这并不容易。
我找到了解决问题的解决方法。
import sys
sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
解决方案来自Jack O'Connor. posted in this answer: