gpt4 book ai didi

python - 从远程数据库获取 UTF8 字符串

转载 作者:行者123 更新时间:2023-11-29 00:59:09 25 4
gpt4 key购买 nike

我的应用程序从远程 MySQL 数据库下载一些数据。问题是 db 将字符串存储为 utf8。但是我收到的数据是 ascii 解码的。如何解决这个问题?

代码:

cursor = conn.cursor()
query = """MY QUERY HERE"""
cursor.execute(query)
result = cursor.fetchall()

最佳答案

也许有一个例子——这里我创建了一个 unicode 字符串“u”,将其编码为 utf8,将其从 utf8 解码回 unicode 字符串,将其编码为 ascii(由于扩展字符在此字符串不能编码为 ascii),然后最终编码为 ascii,用“?”替换错误:

Python 2.6.4 (r264:75706, Dec  7 2009, 18:43:55) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u = u'abc\u2020123'
>>> u
u'abc\u2020123'
>>> u.encode('utf8')
'abc\xe2\x80\xa0123'
>>> s = _
>>> s.decode('utf8')
u'abc\u2020123'
>>> u.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2020' in position 3: ordinal not in range(128)
>>> u.encode('ascii', 'replace')
'abc?123'
>>>

据推测,您正在从 db 返回 utf8 字符串,您应该将这些字符串从 utf8 解码为 un​​icode 字符串,然后可能在输出时重新编码它们以用于消耗程序输出的任何内容......通常您想要类似这样的模型:

  1. 输入数据 -- 从输入编码转换为 unicode [string.decode('utf8')]
  2. 处理数据——只处理 unicode 对象
  3. 输出结果——unicode转输出编码[string.encode('utf8')]

这为您提供了编码/解码的清晰分离,并避免在整个应用程序中散布编码处理代码,因为核心仅处理 unicode。

关于python - 从远程数据库获取 UTF8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com