2017-07-06 2 views
0

私は以下の問題がありました:Windows-1251にエンコードされたサイトはありますか?私はあなたがロシア語で必要なデータを取得するためにBeautifulSoupライブラリを使用しています。テストではファイル内の値が記録され、正しく表示されます。次に、このデータをデータベースに記録しようとしましたが、このエラーが発生しました。Warning: (1366, "Incorrect string value: '\\x98\\xD0\\xBD\\xD1\\x82\\xD0...' for column 'description' at row 1") データベースエンコーディングはutf-8です。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ファイルを読み取る方法を示しています

どうすればこの問題を解決できますか?

答えて

0

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

0

それをデコードすることができますcp1251_general_ciにデータベース符号化方式を変更してみてください。

this linkで、キリル文字の文字セットと照合を確認できます。

関連する問題