Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pymysql不正确地将俄语文本写入数据库_Mysql_Database_Python 3.x_Urllib_Pymysql - Fatal编程技术网

pymysql不正确地将俄语文本写入数据库

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

我遇到了以下问题:是否有一个用windows-1251编码的站点。我正在使用图书馆BeautifulSoup获取您需要的俄语数据。为了测试文件中记录的值,这些值将正确显示。然后,我尝试将此数据记录到数据库中,但出现以下错误:
警告:(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


在上,您可以检查西里尔字母字符集和排序规则。

关于为什么这样做的解释对每个人都有帮助