[python] 파이썬에서 문자열을 UTF-8로 변환하는 방법

utf-8 문자를 Python 서버로 보내는 브라우저가 있지만 쿼리 문자열에서 검색하면 Python이 반환하는 인코딩은 ASCII입니다. 일반 문자열을 utf-8로 어떻게 변환 할 수 있습니까?

참고 : 웹에서 전달 된 문자열은 이미 UTF-8로 인코딩되어 있으므로 ASCII가 아닌 UTF-8로 처리하도록 Python을 만들고 싶습니다.



답변

>>> plain_string = "Hi!"
>>> unicode_string = u"Hi!"
>>> type(plain_string), type(unicode_string)
(<type 'str'>, <type 'unicode'>)

^ 이것은 바이트 문자열 (plain_string)과 유니 코드 문자열의 차이점입니다.

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")

^ 유니 코드로 변환하고 인코딩을 지정하십시오.


답변

위의 방법이 작동하지 않으면 파이썬에게 utf-8로 변환 할 수없는 문자열 부분을 무시하도록 지시 할 수 있습니다.

stringnamehere.decode('utf-8', 'ignore')


답변

약간 과잉 일 수 있지만 동일한 파일에서 ASCII 및 유니 코드로 작업 할 때 디코딩을 반복하는 것이 어려울 수 있습니다. 이것은 내가 사용하는 것입니다.

def make_unicode(input):
    if type(input) != unicode:
        input =  input.decode('utf-8')
    return input


답변

.py 파일 맨 위에 다음 줄 추가 :

# -*- coding: utf-8 -*-

다음과 같이 스크립트에서 직접 문자열을 인코딩 할 수 있습니다.

utfstr = "ボールト"


답변

내가 올바르게 이해하면 코드에 utf-8로 인코딩 된 바이트 문자열이 있습니다.

바이트 열을 유니 코드 문자열로 변환하는 것을 디코딩이라고합니다 (유니 코드-> 바이트 열이 인코딩 임).

유니 코드 함수 또는 디코드 방법 을 사용하여이를 수행합니다 . 어느 한 쪽:

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