pymysql不正确地将俄语文本写入数据库
我遇到了以下问题:是否有一个用windows-1251编码的站点。我正在使用图书馆BeautifulSoup获取您需要的俄语数据。为了测试文件中记录的值,这些值将正确显示。然后,我尝试将此数据记录到数据库中,但出现以下错误:pymysql不正确地将俄语文本写入数据库,mysql,database,python-3.x,urllib,pymysql,Mysql,Database,Python 3.x,Urllib,Pymysql,我遇到了以下问题:是否有一个用windows-1251编码的站点。我正在使用图书馆BeautifulSoup获取您需要的俄语数据。为了测试文件中记录的值,这些值将正确显示。然后,我尝试将此数据记录到数据库中,但出现以下错误:警告:(1366,“不正确的字符串值:'\\x98\\xD0\\xBD\\xD1\\x82\\xD0…'用于第1行的“说明”列) 数据库编码为utf-8。 下面的代码演示如何读取html文件: def get_html(url): req = urllib.request.R
警告:(1366,“不正确的字符串值:'\\x98\\xD0\\xBD\\xD1\\x82\\xD0…'用于第1行的“说明”列)
数据库编码为utf-8。
下面的代码演示如何读取html文件:
def get_html(url):
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
response = urllib.request.urlopen(req)
return response.read()
下面的代码演示了如何将值写入数据库:
def write_to_db(chars, desc):
conn = pymysql.connect(host='localhost',
port=3307,
user='****',
password='****',
db='****',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
global _id
with conn.cursor() as cursor:
sql = "INSERT INTO `articles` (`id_cat`, `characteristics`, `description`) VALUES (%s, %s, %s)"
cursor.execute(sql, (_id, chars, desc))
conn.commit()
最后,我们在数据库中得到了以下字符:
如何克服这个问题?当我试图将整个html文件的编码更改为utf8时,我遇到了一个错误,即某些字符无法解码。按照下面介绍的方式,我们已经收到了没有不必要符号的俄文文本,并且可以平静地解码
with conn.cursor() as cursor:
sql = "INSERT INTO `articles` (`id_cat`, `characteristics`, `description`) VALUES (%s, %s, %s)"
cursor.execute(sql, (_id, chars.encode('utf8'), desc.encode('utf8')))
conn.commit()
尝试将数据库编码更改为cp1251_general_ci
在上,您可以检查西里尔字母字符集和排序规则。关于为什么这样做的解释对每个人都有帮助