gpt4 book ai didi

瑞典字符的 Python 编码

转载 作者:行者123 更新时间:2023-11-28 22:02:50 46 4
gpt4 key购买 nike

我正在使用 scrapy 从网站中提取数据。我正在使用 MysqlDB 将数据保存到 mysql 数据库中。该脚本适用于英文网站,但当我在瑞典网站上尝试时,我得到:

self.db.query(insertion_query)
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 156:
ordinal not in range(128)

我在抓取过程中涉及的每个文件的顶部放置了以下行以指示国际字符的使用: # -- 编码:utf-8 --

但是我仍然得到一个错误。 python 接受非英语字符还需要什么?这是完整的堆栈跟踪:

     Traceback (most recent call last):
File "C:\Python27\lib\site-packages\scrapy-0.14.3-py2.7-win32.egg\scrapy\middleware.py",
line 60, in _process_
chain
return process_chain(self.methods[methodname], obj, *args)
File "C:\Python27\lib\site-packages\scrapy-0.14.3-py2.7-win32.egg\scrapy\utils\defer.py",
line 65, in process_
chain
d.callback(input)
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 368, in callback
self._startRunCallbacks(result)
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 464, in
_startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:\Python27\tco\tco\pipelines.py", line 64, in process_item
self.db.query(insertion_query)
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 156:
ordinal not in range(128)

最佳答案

这个 unicode 问题乍看起来很困惑,但实际上很简单。

# -- coding: utf-8 --

如果你在你的源代码之上写这个,这意味着,python 将将您的代码视为 utf-8,而不是传入或传出数据。

您显然想将一些数据写入您的数据库,但出现了这个错误当您的某些模块将您的 utf-8 字符串(我猜是瑞典语)编码为 ascii 时。

这意味着,要么 MySQL 被设置为 ascii,要么你的 mysql 数据库驱动程序被设置为 ascii。

所以我建议去检查你的 mysql 设置或驱动程序设置。

db = MySQLdb.connect(host=database_host ,user=user ,passwd=pass,db=database_name, charset = "utf8", use_unicode = True)

这将使您的 mysql 驱动程序使用 utf8 连接到 mysql 服务器

关于瑞典字符的 Python 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10579620/

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