2017-06-03 19 views
-1

アクセント付きの文字を保存する際に問題があります。私はすでにこの行を追加したが、働いていないPostgreSQLとPythonの2.7Python:UnicodeDecodeError: 'utf8'

POSTGRESQL - ENCODING = 'LATIN1' 

を使用しています!

#!/usr/bin/python 
# -*- coding: UTF-8 -*- 

エラーメッセージについての詳細:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xed 

してください、それを修正するためにどのように任意のアイデア?

@Edit:

cur = conn.cursor() 
cur.execute("SELECT * FROM users") 
rows = cur.fetchall() 


obj_list = list() 
for row in rows: 
ob = dict() 
ob['ID'] = row[0] 
ob['NAME'] = row[1] 
ob['CITY'] = row[2] 
ob['USERNAME'] = row[3] 

obj_list.append(ob) 

# print obj_list 
# sys.exit() 
def add_object(ob, row): 
ws.cell(column=3, row=row).value = ob['ID'] 
ws.cell(column=4, row=row).value = ob['NAME'] 
ws.cell(column=6, row=row).value = ob['CITY'] 
ws.cell(column=8, row=row).value = ob['USERNANE'] 

コードのこの部分は、エラーをトリガします。それはアクセントを返します。..チェックする

ob['CITY'] = row[2]  
+2

例外を引き起こしているプログラムの部分を私たちに示すことはどうですか?ファイル/ストリームをどのように開いているのか、どのように読み書きしているのかを示してください。 –

+0

「それはアクセントを戻しています」とはどういう意味ですか?このステートメントは、例外を発生させる譲渡です。代入は何も返しません。例外を発生させるステートメントは何も返すことができません。 – Goyo

+0

急なアクセント、単語「é」、「há」は例です。そのような文字は – TMoraes

答えて

1

まず最初は、あなたの「アクセント付き文字は」LATIN1セットに属しているかどうかである - 例えば、Aはありませんが、Sません。もしそうでなければ、あなたは本当にUTF8エンコーディングをPostgreSQLで使うべきです(とにかくおそらくもっと安全です)。

+1

が返されていますが、どうしたらいいですか? – TMoraes

+0

私はPostgreSQLについて何も変更できません。 – TMoraes

+1

ああ、あなたは既にあなたのPostgresデータベースにLATIN1を持っていますが、あなたはPythonにLATIN1を教えていないので、Pythonは代わりにUTF-8を想定しています。 'conn.set_client_encoding( 'LATIN1')'を 'cur.execute'の前に呼び出すと正しくデコードする必要があります。 –