Cgi 스크립트를 사용할 수 있는 '이 아니라' 나는 Python-2.6 수행하는 동안 서버 로그 () ',' 제슨윈덤프스 오류
Traceback (most recent call last):
File "/etc/mongodb/server/cgi-bin/getstats.py", line 135, in <module>
print json.dumps(__getdata())
File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 0: invalid start byte
여기서
'_get 데이터 () 함수는' 사전 ' {}'.
이 질문에 게시하기 전에 나는 이 os 라고 질문을 합니다.
다음 줄을 인코더, JSON 때문에
now = datetime.datetime.now()
now = datetime.datetime.strftime(now, '%Y-%m-%dT%H:%M:%S.%fZ')
print json.dumps({'current_time': now}) // this is the culprit
I got it 를 위한 임시 수리입니다.
print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })
하지만 나는 것이 올바른 길일 확실하지 않다.
일부 비 ascii 문자 및 it can& 오류: 있기 때문에 사전에 # 39, t be 인코딩되지 / 디코딩. 이를 방지하기 위해 한 간단한 방법 등 ' ()' 기능을 통해 다음과 같이 오류: 인코딩하려면 문장열 인코딩합니다 경우 'a' 는 비 ascii 문자 스트링은):
a.encode('utf-8').strip()
는 너회의 문자열을 ascii 문자 인코딩되지 비사양 항목이없습니다.
8일 5월 # 39, ve you& 경우 발생할 수 없는 디코딩합니다 utf 함께 다른 인코딩을 사용하는 데 필요한 코드에서. 예를 들면 다음과 같습니다.
>>> 'my weird character \x96'.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 19: invalid start byte
이 경우, 1252년 는 indows 인코딩입니다 해야 합니다.
>>> 'my weird character \x96'.decode('windows-1252')
u'my weird character \u2013'
이제 인코딩합니다 utf-8 로 유니코드 안전하게 할 수 있습니다.
내가 읽을 때 csv 를 추가한 인코딩입니다 방법:
import pandas as pd
dataset = pd.read_csv('sample_data.csv',header=0,encoding = 'unicode_escape')
with open(out_file, 'rb') as f:
for line in f:
print(line.decode(errors='ignore'))
다음 줄을 인코더, JSON 때문에
now = datetime.datetime.now()
now = datetime.datetime.strftime(now, '%Y-%m-%dT%H:%M:%S.%fZ')
print json.dumps({'current_time': now}) // this is the culprit
I got it 를 위한 임시 수리입니다.
print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })
이 같은 표시를 올바른 임시로 수리입니다 (확실치 않음 그러하매).
만약 위의 방법을 모두 작동안함 당신꺼에요, csv 파일 자체를 바꾸는 인코딩 들여다 볼 수 할 수 있습니다.
사용한 Excel:
메모장을 사용하여:
이렇게 하여, 예전에는 이 이니고데코디로어 csv 파일 없이 가져오기할 있어야 합니다.
모든 표준 인코딩입니다 고객의 특정 사용도와 입력입니다 사용할 수 있습니다.
" utf-8"; 기본값입니다.
" iso8859-1"; 역시 인기를 서유럽.
예: '' bytes_obj.decode (& # 39, iso8859-1& # 39;)
참조: https://docs.python.org/3/library/codecs.html # 표준 인코딩