pymysql不正确的写入数据库的俄文文本
问题描述:
我有以下问题:是否有一个网站编码在windows-1251。我正在使用BeautifulSoup库来获取俄语所需的数据。为了测试记录文件中的值,它们显示正确。然后我试图将这些数据记录到数据库中,但得到这个错误:Warning: (1366, "Incorrect string value: '\\x98\\xD0\\xBD\\xD1\\x82\\xD0...' for column 'description' at row 1")
数据库编码是utf-8。 下面的代码演示了如何读取HTML文件:pymysql不正确的写入数据库的俄文文本
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()
解释为什么这样做会帮助所有人 – jwenting