python2 인코딩 문제

2160 단어
Python2를 사용하여 중국어 관련 코드를 만들 때 Python2의 인코딩에 익숙하지 않으면 십중팔구 당신은 이것에 대해 짜증을 낼 수 있으므로 다음에 인코딩 문제를 분명히 하겠습니다.
명사 해석
ASCII 코드
1960년대에 미국은 문자 인코딩을 제정하여 영어 문자와 이진 비트 간의 관계에 대해 통일된 규정을 하였다.이것은 ASCII 코드라고 불리며 지금까지 계속 사용되고 있다.
ASCII 코드는 모두 128자의 인코딩을 규정하고 있다. 예를 들어 스페이스 바'SPACE'는 32(이진법 0010000)이고 대문자 A는 65(이진법 01000001)이다.128개의 기호(인쇄할 수 없는 32개의 제어 기호 포함)는 한 바이트의 뒤에 있는 7자리만 차지하고 맨 앞에 있는 1위는 0으로 통일되어 있다
유니코드 인코딩
영어는 ASCII 코드만으로도 충분하지만 다른 언어는 안 돼서 인코딩 방식이 많아요.인코딩 방식이 다르면 인코딩에 문제가 생길 수 있다.
그러면 이때 이런 인코딩이 있어서 모든 기호를 포함시키면 더 이상 인코딩에 문제가 없을 것이다. 이것이 바로 유니코드다.
UTF-8
UTF-8은 유니코드의 일종의 실현 방식으로 현재 비교적 통용되는 인코딩 방식이다.유니코드는 왜 그냥 안 쓰지, 공간을 너무 낭비하니까.
왜 인코딩하고 해독해야 합니까
컴퓨터 메모리에서 유니코드 인코딩을 통일적으로 사용하고 저장하거나 전송해야 할 때 UTF8 인코딩으로 변환한다.
그러면 인코딩은 유니코드에서 UTF-8 또는 ASCII로, 인코딩은 UTF-8 또는 ASCII에서 유니코드로 바뀐다.
인코딩과 디코딩은 먼저 코드를 어지럽히지 않기 위해 정상적으로 읽기와 쓰기를 할 수 있다.
Python2의 인코딩
선언 파일
Python2의 기본 파일 인코딩 형식은 ASCII 코드이기 때문에, 우리는 일반적으로 파일 첫머리에 파일 인코딩이 UTF-8이라고 성명합니다.
# -*- coding: utf-8 -*-
  • 성명 파일을 설정하지 않으면python2 기본 ASCII 코드 인코딩 방식
  • 에 따라
  • 선언 인코딩과 실제 인코딩이 일치하지 않으면 실제 인코딩에 따라 읽기
  • str 및 유니버설
    그 다음에 Python2에는 두 가지 유형이 있는데 하나는str이고 다른 하나는unicode이다. 다음과 같다.
    str1 = '  '
    print type(str)   #str
    str2 = u'  '
    print type(str2)  #unicode
    

    str에서 유니버설로 디코딩하고 유니버설에서str로 인코딩하며 출력할 때 유니버설로 출력할 때 정상적으로 표시할 수 있는 일반적인 형식이다.
    # -*- coding:utf-8 -*-
    
    str1 = u"  "
    print str1  # unicode    
    str2 = str1.encode('utf-8') #    UTF-8   
    print str2    #   
    str3 = str1.encode('gbk')   #    GBK  
    print str3    # gbk      
    

    출력 유니버설은 인코딩되지 않습니다. 윈도우즈 아래 컨트롤러의 인코딩 형식은 gbk이기 때문에 인코딩은 gbk 형식이 틀리지 않지만 UTF-8로 인코딩된 것은 컨트롤러 gbk와 일치하지 않아 인코딩이 잘못됩니다.
    # -*- coding:utf-8 -*-
    
    str1 = "  "
    print str1  #   UTF-8   
    str2 = str1.decode('utf-8') #    unicode
    print str2  # unicode    
    str3 = str1.decode('utf-8').encode('gbk') #    gbk          
    

    총결산
    파일의 실제 인코딩 형식과 성명 인코딩 형식은 UTF-8을 통일적으로 사용하고 저장과 관련된 통일을 유니버설로 변환하며 출력할 때 UTF-8 또는 gbk로 변환하면 된다.
    --EOF--

    좋은 웹페이지 즐겨찾기