source

Python에서 문자열을 utf-8로 변환하는 방법

factcode 2022. 9. 14. 22:13
반응형

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')
ñ
  • 첫번째,strin Python은 다음과 같습니다.Unicode.
  • 둘째,UTF-8부호화하는 부호화 표준입니다.Unicode에 줄을 매다.bytes. 많은 부호화 표준이 있습니다(예:UTF-16,ASCII,SHIFT-JIS등).

클라이언트가 서버로 데이터를 전송하고 다음 서버를 사용하는 경우UTF-8, 그들은 다량의 데이터를 보내고 있다.bytes것은 아니다.str.

고객님은 수신하셨습니다.str사용하고 있는 「스위치」또는 「스위치」가 암묵적으로 랜덤하게 변환되어 있기 때문입니다.bytes로.str.

후드 밑에는 그냥 한 뭉치만 있다.bytes '에 요청 하면 됩니다. '도서관'에 요청 내용을 알려주시면 됩니다.bytes디코딩을 직접 처리하게 됩니다(라이브러리가 제공할 수 없는 경우는, 블랙 매직을 시도하고 있는 것이므로, 사용하지 말아 주세요).

  • ★★★UTF-8된 「」bytes로로 합니다.strbs.decode('utf-8')
  • " "str로로 합니다.UTF-8 bytess.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

반응형