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() 
+0

解释为什么这样做会帮助所有人 – jwenting

尝试改变数据库编码cp1251_general_ci。

this link您可以检查西里尔文字符集和归类。