Python에서 문자열을 utf-8로 변환하는 방법
Python 서버에 utf-8 문자를 보내는 브라우저를 가지고 있지만 쿼리 문자열에서 utf-8 문자를 가져오면 Python이 반환하는 인코딩은 ASCII입니다.플레인 스트링을 utf-8로 변환하려면 어떻게 해야 하나요?
메모: 웹에서 전달된 문자열은 이미 UTF-8로 인코딩되어 있으므로 Python이 ASCII가 아닌 UTF-8로 처리하도록 하겠습니다.
Python 2의 경우
>>> plain_string = "Hi!"
>>> unicode_string = u"Hi!"
>>> type(plain_string), type(unicode_string)
(<type 'str'>, <type 'unicode'>)
^ 이것은 바이트 문자열(plain_string)과 Unicode 문자열의 차이입니다.
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
^ 유니코드로 변환하여 인코딩을 지정합니다.
Python 3의 경우
모든 문자열이 Unicode입니다.그unicode
함수는 더 이상 존재하지 않습니다.@Noumenon의 답변을 참조하십시오.
위의 메서드가 작동하지 않으면 Python에게 utf-8로 변환할 수 없는 문자열 부분을 무시하도록 지시할 수도 있습니다.
stringnamehere.decode('utf-8', 'ignore')
조금 과잉일지도 모르지만, 같은 파일에서 asciii와 unicode를 사용할 때는 디코딩을 반복하는 것이 귀찮을 수 있습니다.이것이 제가 사용하는 방법입니다.
def make_unicode(inp):
if type(inp) != unicode:
inp = inp.decode('utf-8')
return inp
.py 파일의 맨 위에 다음 행을 추가합니다.
# -*- coding: utf-8 -*-
를 사용하면 다음과 같이 스크립트로 스트링을 직접 인코딩할 수 있습니다.
utfstr = "ボールト"
내가 제대로 이해했다면 코드에는 utf-8 인코딩된 바이트 문자열이 있습니다.
바이트 문자열을 Unicode 문자열로 변환하는 것을 디코딩이라고 합니다(unicode -> byte-string은 부호화입니다).
이를 수행하려면 유니코드 함수 또는 디코드 방법을 사용합니다.다음 중 하나:
unicodestr = unicode(bytestr, encoding)
unicodestr = unicode(bytestr, "utf-8")
또는 다음 중 하나를 선택합니다.
unicodestr = bytestr.decode(encoding)
unicodestr = bytestr.decode("utf-8")
city = 'Ribeir\xc3\xa3o Preto'
print city.decode('cp1252').encode('utf-8')
Python 3.6에서는 Unicode() 메서드가 내장되어 있지 않습니다.문자열은 기본적으로 이미 유니코드로 저장되어 변환이 필요하지 않습니다.예제:
my_str = "\u221a25"
print(my_str)
>>> √25
ord() 및 unichar()로 변환합니다.모든 유니코드 문자에는 인덱스와 같은 숫자가 부가되어 있습니다.Python은 char와 그의 숫자를 번역하는 몇 가지 방법을 가지고 있습니다.단점이 있습니다.도움이 됐으면 좋겠다.
>>> C = 'ñ'
>>> U = C.decode('utf8')
>>> U
u'\xf1'
>>> ord(U)
241
>>> unichr(241)
u'\xf1'
>>> print unichr(241).encode('utf8')
ñ
- 첫번째,
str
in Python은 다음과 같습니다.Unicode
. - 둘째,
UTF-8
부호화하는 부호화 표준입니다.Unicode
에 줄을 매다.bytes
. 많은 부호화 표준이 있습니다(예:UTF-16
,ASCII
,SHIFT-JIS
등).
클라이언트가 서버로 데이터를 전송하고 다음 서버를 사용하는 경우UTF-8
, 그들은 다량의 데이터를 보내고 있다.bytes
것은 아니다.str
.
고객님은 수신하셨습니다.str
사용하고 있는 「스위치」또는 「스위치」가 암묵적으로 랜덤하게 변환되어 있기 때문입니다.bytes
로.str
.
후드 밑에는 그냥 한 뭉치만 있다.bytes
'에 요청 하면 됩니다. '도서관'에 요청 내용을 알려주시면 됩니다.bytes
디코딩을 직접 처리하게 됩니다(라이브러리가 제공할 수 없는 경우는, 블랙 매직을 시도하고 있는 것이므로, 사용하지 말아 주세요).
- ★★★
UTF-8
된 「」bytes
로로 합니다.str
bs.decode('utf-8')
- " "
str
로로 합니다.UTF-8
bytes
s.encode('utf-8')
다음 작업도 수행할 수 있습니다.
from unidecode import unidecode
unidecode(yourStringtoDecode)
파이썬의 표준 라이브러리 모듈을 사용할 수 있습니다.
import codecs
codecs.decode(b'Decode me', 'utf-8')
URL은 ASCII로 변환되고 Python 서버에는 유니코드 문자열일 뿐입니다.예를 들어, 다음과 같습니다."T%C3%A9%C3%A3O"
Python은 "e"와 """를 실제 %C3%A9 및 %C3%A3로 인식합니다.
다음과 같이 URL을 인코딩할 수 있습니다.
import urllib
url = "T%C3%A9st%C3%A3o"
print(urllib.parse.unquote(url))
>> Téstão
자세한 내용은 https://www.adamsmith.haus/python/answers/how-to-decode-a-utf-8-url-in-python을 참조하십시오.
네, 추가할 수 있습니다.
# -*- coding: utf-8 -*-
소스코드의 첫 번째 줄에 입력합니다.
상세한 것에 대하여는, https://www.python.org/dev/peps/pep-0263/ 를 참조해 주세요.
언급URL : https://stackoverflow.com/questions/4182603/how-to-convert-a-string-to-utf-8-in-python
'source' 카테고리의 다른 글
MariaDB 날짜별 정렬 및 제한 오프셋 및 결측 결과 (0) | 2022.09.14 |
---|---|
Mysql에서 int(10)의 최대 크기는 얼마입니까? (0) | 2022.09.14 |
UNIX 타임스탬프를 포맷된 날짜 문자열로 변환 (0) | 2022.09.14 |
어레이 요소를 한 어레이 위치에서 다른 어레이 위치로 이동합니다. (0) | 2022.09.14 |
WHERE 절의 조건 순서가 MySQL 성능에 영향을 미칩니까? (0) | 2022.09.14 |