이 오류에 대한 조사를 조금 했으므로 계속 진행되고 있습니다. 내가 이해하는 한, 한 가지 유형의 인코딩에서 다른 형식으로 변환하기 때문에 기본적으로 문제가 있습니다.UnicodeDecodeError : 'ascii'코덱에서 바이트의 위치를 디코딩 할 수 없습니다. 서수가 범위에 없음 (128)
def write_table_to_file(table, connection):
db_table = io.StringIO()
cur = connection.cursor()
#pdb.set_trace()
cur.copy_to(db_table, table)
cur.close()
return db_tabl
이것은 나를 아프게하는 방법입니다. 데이터베이스 인코딩은 LATIN1
데이터베이스의 인코딩
tctmsv64=> SHOW CLIENT_ENCODING;
client_encoding
-----------------
sql_ascii
(1 row)
이다 나는이 방법을 실행하면 아래의 오류가 출력
[[email protected] python3]$ python3 datamain.py
Traceback (most recent call last):
File "datamain.py", line 48, in <module>
sys.exit(main())
File "datamain.py", line 40, in main
t = write_table_to_file("cms_jobdef", con_tctmsv64)
File "datamain.py", line 19, in write_table_to_file
cur.copy_to(db_table, table)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 40: ordinal not in range(128)
에서 테이블을 검색하는 데이터베이스 메신저에 클라이언트 인코딩입니다 나는 그들을 넣고있다.
S104838=# SHOW CLIENT_ENCODING;
client_encoding
-----------------
WIN1252
(1 row)
나는 데이터베이스 인코딩 i 의 UTF8 나는 그들이 내가 노력하고 내가 얻을 디코딩 방법을 사용할 때 문제가 인코딩
To correct your function, you'll have to know what encoding the byte
string is in, and convert it to unicode using the decode() method,
and compare that result to the unicode string.
을 변경하는 것이 좋습니다 발견 스레드에서
불만은없는 파일 형식이 . 클래스 io.StringIO (initial_value = '', newline = '\ n') ¶ 메소드에 대한 python 3.4 메소드를 살펴 보았지만 인코딩 변경시 아무것도 찾을 수 없었습니다. 나는 그것을 해결하기 위해 할 필요가 무엇
가 나는 또한 문제를 설명이 페이지를 발견하지만 난 알아낼 수
기본적으로https://wiki.python.org/moin/UnicodeDecodeError
I 해요 무슨 일이 일어나고 있는지에 관해서 매우 혼란 그것을 고치는 법을 모릅니다. 어떤 도움이라도 대단히 감사하겠습니다.
건배
'SQL_ASCII'은 인코딩이 아닙니다. 변환 또는 유효성 검사없이 수신 한 바이트를 데이터베이스에 저장하도록 지시합니다. 절대 사용해서는 안됩니다. 원본 데이터베이스에 다르게 인코딩 된 텍스트가 혼합되어있을 수 있습니다. –