파이썬 인코딩 및 문자열

2119 단어
문자 인코딩
문자열도 데이터 형식이지만 문자열이 비교적 특수한 것은 인코딩 문제가 하나 더 있다.컴퓨터는 숫자만 처리할 수 있기 때문에, 텍스트를 처리하려면 먼저 텍스트를 숫자로 바꾸어야만 처리할 수 있다.우리는 처음에 ASCII 코드가 하나 있었고 중국의 GB*****도 있었다. 각국의 코드는 여러 가지 위정으로 여러 언어가 동시에 존재할 때 난자 문제가 발생할 수 있다는 것을 안다.그리고 유니코드가 생겼다. 유니코드는 모든 언어를 하나의 인코딩으로 통일시켜 더 이상 인코딩에 문제가 생기지 않게 했다.유니코드 표준도 끊임없이 발전하고 있지만 가장 자주 사용하는 것은 두 바이트로 한 문자를 표시하는 것이다. (매우 외진 문자를 사용하려면 네 바이트가 필요하다.)현대 OS와 대부분의 프로그래밍 언어는 유니코드를 직접 지원합니다.유니코드 인코딩으로 통일되면 코드 혼란 문제는 사라진다.그러나 만약에 당신이 쓴 텍스트가 기본적으로 모두 영어라면 유니코드 인코딩은 ASCII 인코딩보다 두 배의 저장 공간을 필요로 하기 때문에 저장과 전송에 있어서는 매우 수지가 맞지 않는다.절약의 정신에 따라 유니코드 인코딩을'가변 길이 인코딩'으로 바꾸는 UTF-8 인코딩도 등장했다.UTF-8 인코딩은 유니코드 문자를 숫자 크기에 따라 1-6 바이트로 인코딩하고, 자주 사용하는 영문 자모는 1 바이트로 인코딩하며, 한자는 보통 3 바이트로 생소한 문자만 4-6 바이트로 인코딩한다.컴퓨터 메모리에서 유니코드 인코딩을 일괄적으로 사용하고 하드디스크에 저장하거나 전송이 필요할 때 UTF-8 인코딩으로 변환한다.메모장으로 편집할 때는 파일에서 읽은 UTF-8 문자를 유니코드 문자로 메모리로 변환하고, 편집이 완료되면 저장할 때 다시 유니코드를 UTF-8로 변환해 파일에 저장한다.웹 페이지를 탐색할 때 서버는 동적으로 생성된 유니코드 내용을 UTF-8로 변환하여 브라우저로 전송합니다.그래서 많은 웹 페이지의 원본 코드에 유사의 정보가 있는데 이 웹 페이지가 바로 UTF-8 인코딩을 사용하고 있음을 나타낸다.
파이썬 문자열
또한 최신 Python 3 버전에서는 문자열이 유니코드로 인코딩되어 있습니다. 즉, Python의 문자열은 다중 언어를 지원합니다.단일 문자의 인코딩에 대해 파이톤은ord () 함수를 제공하여 문자의 정수 표시를 가져오고chr () 함수는 인코딩을 대응하는 문자로 변환합니다.Python의 문자열 형식은str이기 때문에 메모리에 유니코드로 표시되며, 한 문자는 몇 바이트에 대응합니다.네트워크에서 전송하거나 디스크에 저장하려면str를 바이트 단위의bytes로 변경해야 합니다.a = b'ABCD' 'ABC'b'ABC'가 표시한 내용은 모두 같지만 전자는str이고 후자는bytes의 문자마다 한 바이트만 차지한다.파이썬 소스 코드도 텍스트 파일이기 때문에 소스 코드에 영어가 포함되어 있을 때 소스 코드를 저장할 때 UTF-8 인코딩으로 저장할 것을 반드시 지정해야 한다.파이썬 해석기가 소스 코드를 읽을 때 UTF-8 인코딩에 따라 읽을 수 있도록 파일의 시작 부분에 두 줄을 씁니다.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

첫 번째 줄의 주석은 Linux/OS X 시스템에 알리기 위해서입니다. 이것은 Python 실행 가능한 프로그램이고 Windows 시스템은 이 주석을 무시합니다.두 번째 줄의 주석은 Python 해석기에 UTF-8 인코딩에 따라 원본 코드를 읽는 것을 알려주기 위해서입니다. 그렇지 않으면 원본 코드에 쓴 중국어 출력이 혼란스러울 수 있습니다.
서식 적용>>>'Hello,%s' % 'world''Hello,world'%는 문자열을 포맷하는 데 사용되며, 문자열 내부에서%s는 문자열 교체를,%d는 정수 교체를,%f는 부동점수를, x는 16진수를 나타낸다. 무엇을 사용해야 할지 확실하지 않으면%s는 영원히 유효하다.

좋은 웹페이지 즐겨찾기