오류 UnicodeDecodeError: 'utf-8' 코덱이 0의 바이트 0xff를 디코딩할 수 없습니다. 잘못된 시작 바이트입니다.
https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
위 사이트에서 "process.py" 컴파일 중 오류가 발생하였습니다.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
트레이스백(최신 콜의 마지막):
File "tools/process.py", line 235, in <module>
main()
File "tools/process.py", line 167, in main
src = load(src_path)
File "tools/process.py", line 113, in load
contents = open(path).read()
File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
에러의 원인은 무엇입니까?Python의 버전은 3.5.2입니다.
Python)을 변환하려고 .bytes
utf-8-module 문자열로 간주됩니다(Unicode 문자열).str
이 규칙에 utf-8 utf-8 f utf-8을 사용합니다.utf-8 0xff ( ,의0 )에서는 허가되지 않는 바이트시퀀스가 검출됩니다.
당신이 우리가 볼 수 있는 코드를 알려주지 않았기 때문에, 우리는 나머지 부분만 추측할 수 있었다.
「」, 「」)로부터의 판독이라고 생각할 수.contents = open(path).read()
을 제안합니다
with open(path, 'rb') as f:
contents = f.read()
★★★b
의 open()
파일은 되므로, 이 로 취급하다contents
bytes
이 방법으로는 디코딩을 시도하지 않습니다.
이 솔루션을 사용하면 문자가 삭제(무시)되고 문자가 없는 문자열이 반환됩니다.변환하지 않고 삭제해야 할 경우에만 사용하십시오.
with open(path, encoding="utf8", errors='ignore') as f:
「」를 사용합니다.errors='ignore'
몇 개의 문자가 손실될 뿐이지만, 소켓 서버에 접속되어 있는 클라이언트의 포맷이나 프로그래밍에 문제가 있는 것 같기 때문에, 그 문자는 신경 쓰지 않는 것이 좋습니다.그렇다면 간단한 직접 해결책입니다.레퍼런스
이 문제를 해결하려면 ISO-8859-1 인코딩 형식을 사용합니다.
이와 유사한 문제가 발생하여 UTF-16을 사용하여 디코딩하게 되었습니다.코드는 다음과 같습니다.
with open(path_to_file,'rb') as f:
contents = f.read()
contents = contents.rstrip("\n").decode("utf-16")
contents = contents.split("\r\n")
파일 내용을 가져오지만 UTF 형식으로 코드를 반환합니다.거기서부터 해독되어 행으로 구분됩니다.
같은 에러가 발생했을 때, 이 스레드를 발견한 적이 있습니다.확인할 수 있는 조사 결과, 이것은 UTF-16 파일을 UTF-8로 디코딩하려고 할 때 발생하는 에러입니다.
UTF-16에서는 첫 번째 문자(UTF-16에서는 2바이트)는 Byte Order Mark(BOM; 바이트 순서 마크)로 디코딩 힌트로 사용되며 디코딩 문자열에는 문자로 표시되지 않습니다.즉, 첫 번째 바이트는 FE 또는 FF가 되고 두 번째 바이트는 다른 바이트가 됩니다.
내가 진짜 답을 알아낸 후 심하게 편집되었다.
사용만 하다
base64.b64decode(a)
대신
base64.b64decode(a).decode('utf-8')
이는 파일을 읽을 때 인코딩 방식이 다르기 때문입니다.python에서는 기본적으로 유니코드를 사용하여 데이터를 인코딩합니다.다만, 다양한 플랫폼에서는 동작하지 않는 경우가 있습니다.
utf-8'이 작동하지 않을 경우 이를 해결할 수 있는 인코딩 방법을 제안합니다.
with open(path, newline='', encoding='cp1252') as csvfile:
reader = csv.reader(csvfile)
여기서 부호화 방법을 변경하면 동작합니다.또한 위의 인코딩 방법이 적합하지 않은 경우 표준 인코딩을 여기에서 찾을 수 있습니다.
단순히 파일을 읽기 위해 잘못된 인코딩을 선택했다는 것을 의미합니다.
에서는, Mac 「」를 합니다.file -I file.txt
올바른 인코딩을 찾습니다. 를 사용합니다.file -i file.txt
.
PNG 파일도 비슷한 문제가 있어서 위의 해결책을 시도했지만 성공하지 못했습니다.이건 파이썬 3.8에서 작동했어
with open(path, "rb") as f:
데이터 프레임용 Panda를 취급할 때 유사한 오류가 발생하는 고객은 다음과 같은 솔루션을 사용합니다.
의 예를 나타냅니다.
df = pd.read_csv("File path", encoding='cp1252')
는 이것을 .UnicodeDecodeError
.pandas.read_csv()
제 경우 다른 인코더 타입을 사용해도 이 문제를 해결할 수 없었습니다., 지지하하하를 하는 대신
pd.read_csv(filename, delimiter=';')
사용:
pd.read_csv(open(filename, 'r'), delimiter=';')
나한테는 잘 돌아가는 것 같아요
주의:인open()
,, " "'r'
'rb'
왜냐면'rb'
bytes
이 「」의 문제입니다.이것은, 에서 같은 문제입니다.read_csv()
'r'
str
합니다..csv
「」를 encoding='utf-8'
데이터 할 수 .read_csv()
★★★★★★ 。
Mac 의 경우는, 숨김 파일의 유무를 확인합니다.DS_Store.파일을 삭제한 후 프로그램이 작동했습니다.
시리얼 포트로부터 데이터를 수신하고 있는 경우는, 올바른 보레이트(및 그 외의 설정)를 사용하고 있는 것을 확인해 주세요. (utf-8)을 사용해 디코딩 합니다만, 잘못된 설정으로 같은 에러가 발생합니다.
UnicodeDecodeError: 'utf-8' 코덱이 0의 바이트 0xff를 디코딩할 수 없습니다. 잘못된 시작 바이트입니다.
의 하려면 , Linux 를 사용합니다.stty -F /dev/ttyUSBX -a
나는 비슷한 문제가 있어서 이 문제에 대해 모든 인터넷을 검색했다.
이 문제가 있는 경우 HTML 코드를 새로운 HTML 파일에 복사하고 일반 HTML 파일을 사용하면 됩니다.
동일한 위치에 새 HTML 파일을 만들고 다른 이름을 사용합니다.
읽을 파일의 경로를 확인합니다.현재 작업 디렉토리로 경로 이름을 변경할 때까지 코드가 계속 오류를 발생시켰습니다.오류:
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
이 파일에는 특수 문자가 있으므로 이 파일을 읽으려면 latin1 인코딩을 사용해야 합니다. 파일을 읽으려면 다음 코드 스니펫을 사용하십시오.
여기서 문제가 되는 것은 부호화 타입입니다.Python이 읽을 데이터를 변환할 수 없는 경우 오류가 발생합니다.
latin1 또는 기타 부호화 값을 지정할 수 있습니다.
데이터셋에 적합한 데이터셋을 찾기 위해 테스트해 보십시오.
저도 비슷한 문제가 있었어요.
해결 방법:
import io
with io.open(filename, 'r', encoding='utf-8') as fn:
lines = fn.readlines()
하지만, 나는 다른 문제가 있었다.(저의 경우) 일부 html 파일이 utf-8이 아니어서 비슷한 오류가 발생하였습니다.그 html 파일을 제외했을 때, 모든 것이 원활히 동작했습니다.
따라서 코드를 수정하는 것 외에 읽고 있는 파일도 확인합니다.아마도 호환성이 없는 것 같습니다.
Linux에서 생성된 파일을 처리할 때 동일한 문제가 발생합니다.물음표가 있는 파일과 관련이 있는 것으로 밝혀졌습니다
내 경우 다음 코드가 작동했습니다.
df = pd.read_csv(fd,cd = '\t', 인코딩 = 'cp1252')
가능하면 텍스트에디터로 파일을 열고 인코딩을 UTF-8로 변경해 봅니다.그렇지 않으면 OS 수준에서 프로그래밍 방식으로 변경합니다.
저도 비슷한 문제가 있어요.tensorflow/models/objective_detection에서 예를 실행하려고 했는데 같은 메시지를 받았습니다.Python3를 Python2로 변경해 보십시오.
언급URL : https://stackoverflow.com/questions/42339876/error-unicodedecodeerror-utf-8-codec-cant-decode-byte-0xff-in-position-0-in
'programing' 카테고리의 다른 글
sudo 없이 mysql 서버에 연결 (0) | 2022.12.29 |
---|---|
Python MySql 삽입이 작동하지 않음 (0) | 2022.12.29 |
JavaScript 루프에 지연을 추가하려면 어떻게 해야 하나요? (0) | 2022.12.29 |
데이터가 현재 값보다 낮은 값을 갖는 데이터 선택 (0) | 2022.12.29 |
--skip-grant-tables로 MySQL을 시작하는 방법 (0) | 2022.12.29 |