[파이썬] 기법 쓰레기 문제를 해결하기 위해 UTF-8-SIG 기록을 CSV 파일 인코딩 형식을 사용

첫 번째 예는 각각 不指定编码, 指定编码为 utf-8, 指定编码为 utf-8-sig세 가지 방법의 비교를 수행하는 다음 비교를 만들기 위해 CSV 파일 txt 파일을 작성


첫째, 직접 CSV 파일로 인코딩을 지정하지

import csv

with open('test.csv', 'w') as fp:
    writer = csv.writer(fp)
    writer.writerow(['汉语', '俄语', '韩语', '日语', '英语'])
    writer.writerow(['爱你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])

다음과 같은 오류가보고됩니다이 시간에 프로그램을 실행합니다 :

UnicodeEncodeError: 'gbk' codec can't encode character '\uc0ac' in position 14: illegal multibyte sequence

둘째, UTF-8 인코딩을 지정하고 CSV 파일 저장

다음 시도가 만족합니다 utf-8영어 외에도 것을 볼 수 test.csv 파일로 인코딩, 다른 하나는 모든 깨진입니다 :

import csv

with open('test.csv', 'w', encoding='utf-8') as fp:
    writer = csv.writer(fp)
    writer.writerow(['汉语', '俄语', '韩语', '日语', '英语'])
    writer.writerow(['爱你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])

그림 삽입 설명 여기


셋째, UTF-8-SIG에 인코딩을 지정하고 CSV 파일에 저장된

모드로 부호화 할 때 utf-8-sig이후를, 디스플레이가 일반적이다 :

import csv

with open('test.csv', 'w', encoding='utf-8-sig') as fp:
    writer = csv.writer(fp)
    writer.writerow(['汉语', '俄语', '韩语', '日语', '英语'])
    writer.writerow(['爱你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])

그림 삽입 설명 여기


넷째, TXT 파일로 직접 인코딩을 지정하지

with open('test.txt','w') as fp:
    fp.write('爱你, люблю тебя, 사랑해요, 愛しています, love you')

그리고 CSV 파일로, 또한 다음과 같은 오류를보고했습니다 :

UnicodeEncodeError: 'gbk' codec can't encode character '\uc0ac' in position 16: illegal multibyte sequence

다음 지정된 UTF-8 / UTF-8-SIG로서 부호화하고, 다섯, TXT 파일에 저장된

utf-8또는이 utf-8-sig있는 test.txt 파일로 코딩, 내용이 완전히 정상입니다 :

with open('test.txt','w', encoding='utf-8') as fp:
    fp.write('爱你, люблю тебя, 사랑해요, 愛しています, love you')
with open('test.txt','w', encoding='utf-8-sig') as fp:
    fp.write('爱你, люблю тебя, 사랑해요, 愛しています, love you')

그림 삽입 설명 여기


UTF-8과 UTF-8-SIG의 차이점은 무엇입니까?

  • utf-8 바이트 코딩 장치는 모든 시스템이 동일한, 더 바이트 순서 문제 없습니다되는 바이트 순서는, 실제로는 BOM을 필요로하지 않습니다;

  • uft-8-sig 서명의 시그 철자, UTF-8, 즉 서명 (BOM과 UTF-8)와;

  • BOM 전체 바이트 순서 마크, 바이트 순서 표시, 텍스트의 파일 헤더 나타난다는 유니 코드 인코딩 표준 파일 형식이 사용되는 식별 인코딩에 사용됩니다.

쓰기 CSV 파일을 사용하는 이유는 코딩을 UTF-8을-SIG?

  • 식별 코드를 읽고 엑셀 csv 파일은 기본에 따라 더 BOM 헤더 정보, 유니 코드 인코딩을 읽을 수없는 경우, 헤드 BOM하여 파일을 읽을 수있다.

  • 우리가 UTF-8 BOM 정보를 생성하지 않는 csv 파일을 생성하기 위해 인코딩 사용하면 Excel에서 자동으로 유니 코드 판독을 따를 것이다, 문제가 왜곡됩니다.

왜 쓰기 txt 파일은 UTF-8 인코딩을 사용 하는가?

  • TXT 파일을 작성하는 경우, Windows가 GBK으로 트랜스 코딩 기본 것이다, GBK는 supported'll 선언 인코딩 파일을 여는 오류가 발생하지 않는 일부 문자를 만난 것은 UTF-8이 오류를 방지 할 수있을 것입니다.
게시 된 149 개 원래 기사 · 원 찬양 (518) ·은 460,000 + 조회수

추천

출처blog.csdn.net/qq_36759224/article/details/104417871