error 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
오류의 원인은 무엇입니까? 파이썬 버전은 3.5.2입니다.
파이썬은 바이트 배열 ( bytes
utf-8로 인코딩 된 문자열이라고 가정)을 유니 코드 문자열 ( str
) 로 변환하려고합니다 . 이 과정은 물론 utf-8 규칙에 따른 디코딩입니다. 이 작업을 시도하면 UTF-8 인코딩 문자열 (즉, 위치 0의 0xff)에서 허용되지 않는 바이트 시퀀스가 발생합니다.
우리가 볼 수있는 코드를 제공하지 않았으므로 나머지 부분 만 추측 할 수 있습니다.
스택 추적에서 트리거링 조치가 파일에서 읽은 것으로 가정 할 수 있습니다 ( 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'
일부 캐릭터를 잃게됩니다. 그러나 소켓 서버에 연결하는 클라이언트의 잘못된 형식 지정 및 프로그래밍에서 비롯된 추가 문자 인 것처럼 보이므로 관심이 없다면 그런 다음 쉬운 직접 솔루션입니다. 참고
이와 비슷한 문제가 있었지만 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-8 파일을 UTF-8로 디코딩하려고 할 때 발생하는 오류입니다.
UTF-16을 사용하면 첫 번째 문자 (UTF-16의 2 바이트)는 디코딩 순서 로 사용되며 디코딩 된 문자열에 문자로 표시되지 않는 BOM (Byte Order Mark) 입니다. 이는 첫 번째 바이트는 FE 또는 FF이고 두 번째 바이트는 다른 바이트입니다.
실제 답변을 찾은 후에 크게 편집
만 사용
base64.b64decode(a)
대신에
base64.b64decode(a).decode('utf-8')
Mac에있는 경우 숨겨진 파일 (.DS_Store)이 있는지 확인하십시오. 파일을 제거한 후 내 프로그램이 작동했습니다.
인코딩 형식 ISO-8859-1 사용 을 하여 문제를 해결하십시오.
읽을 파일의 경로를 확인하십시오. 작업 디렉토리를 표시하도록 경로 이름을 변경할 때까지 코드에서 계속 오류가 발생합니다. 오류는 다음과 같습니다
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
직렬 포트에서 데이터를 수신하는 경우 올바른 전송 속도 (및 다른 구성)를 사용하고 있는지 확인하십시오 : ( utf-8 )을 사용하여 디코딩 하지만 잘못된 구성은 동일한 오류를 생성합니다
UnicodeDecodeError : 'utf-8'코덱이 위치 0의 바이트 0xff를 디코딩 할 수 없습니다 : 유효하지 않은 시작 바이트
Linux에서 직렬 포트 구성을 확인하려면 다음을 사용하십시오. stty -F /dev/ttyUSBX -a
비슷한 문제가 있습니다. tensorflow / models / objective_detection에서 예제를 실행하려고 시도하고 동일한 메시지를 만났습니다. Python3을 Python2로 변경하십시오.
가능하면 텍스트 편집기에서 파일을 열고 인코딩을 UTF-8로 변경하십시오. 그렇지 않으면 OS 수준에서 프로그래밍 방식으로 수행하십시오.
HitHere, you should load the "GoogleNews-vectors-negative300.bin.gz" file at first then extract it by this command in Ubuntu: gunzip -k GoogleNews-vectors-negative300.bin.gz. [ manually extracting is never recommended]. secondly, you should apply these commands in pyrhon 3:
import gensim model = gensim.models.Word2Vec.load_word2vec_format('./model/GoogleNews-vectors-negative300.bin', binary=True) .
I hope it will be useful.
'development' 카테고리의 다른 글
Windows 10에서 환경 변수가 너무 큼 (0) | 2020.07.26 |
---|---|
C # 응용 프로그램 용 설치 프로그램을 만들고 .NET Framework 설치 관리자를 설치 프로그램에 포함 (0) | 2020.07.26 |
간단한 대화 상자를 사용하여 Python에서 파일 선택 (0) | 2020.07.25 |
INSERT INTO… 모든 MySQL 열에 대해 선택 (0) | 2020.07.25 |
TFS 체크인 오류-파일을 찾을 수 없습니다 (0) | 2020.07.25 |