utf-8 문자를 Python 서버로 보내는 브라우저가 있지만 쿼리 문자열에서 검색하면 Python이 반환하는 인코딩은 ASCII입니다. 일반 문자열을 utf-8로 어떻게 변환 할 수 있습니까?
참고 : 웹에서 전달 된 문자열은 이미 UTF-8로 인코딩되어 있으므로 ASCII가 아닌 UTF-8로 처리하도록 Python을 만들고 싶습니다.
"some_string".encode('utf-8').decode('utf-8')
utf-8 문자를 Python 서버로 보내는 브라우저가 있지만 쿼리 문자열에서 검색하면 Python이 반환하는 인코딩은 ASCII입니다. 일반 문자열을 utf-8로 어떻게 변환 할 수 있습니까?
참고 : 웹에서 전달 된 문자열은 이미 UTF-8로 인코딩되어 있으므로 ASCII가 아닌 UTF-8로 처리하도록 Python을 만들고 싶습니다.
"some_string".encode('utf-8').decode('utf-8')
답변:
>>> 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")
^ 유니 코드로 변환하고 인코딩을 지정하십시오.
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 2: invalid start byte
이것은 내 코드입니다 : csvReader의 줄에 대한 ret = [] : 줄에있는 elm의 경우 cline = [] : unicodestr = unicode (elm, 'utf-8') cline.append (unicodestr) ret .append (cline)
unicode()
되지 않으며 모든 문자열은 유니 코드이며 존재하지 않습니다.
u
다시 변환하는 방법 str
(로 u
다시 변환 s
)?
위의 방법이 작동하지 않으면 파이썬에게 utf-8로 변환 할 수없는 문자열 부분을 무시하도록 지시 할 수 있습니다.
stringnamehere.decode('utf-8', 'ignore')
.py 파일 맨 위에 다음 줄 추가 :
# -*- coding: utf-8 -*-
다음과 같이 스크립트에서 직접 문자열을 인코딩 할 수 있습니다.
utfstr = "ボールト"
from __future__ import unicode_literals
상단에 추가 하거나 u''
접두사를 사용하십시오 . bytes
리터럴 에는 ASCII가 아닌 문자를 사용하지 마십시오 . UTF-8 바이트를 얻으려면 utf8bytes = unicode_text.encode('utf-8')
나중에 필요한 경우 나중에 할 수 있습니다.
from __future__ import unicode_literals
ASCII가 아닌 문자가 포함 된 문자열을 utf-8로 변환하는 데 어떻게 도움이됩니까?
내가 올바르게 이해하면 코드에 utf-8로 인코딩 된 바이트 문자열이 있습니다.
바이트 열을 유니 코드 문자열로 변환하는 것을 디코딩이라고합니다 (유니 코드-> 바이트 열이 인코딩 임).
유니 코드 함수 또는 디코드 방법 을 사용하여이를 수행합니다 . 어느 한 쪽:
unicodestr = unicode(bytestr, encoding)
unicodestr = unicode(bytestr, "utf-8")
또는:
unicodestr = bytestr.decode(encoding)
unicodestr = bytestr.decode("utf-8")
예, 추가 할 수 있습니다
# -*- coding: utf-8 -*-
소스 코드의 첫 줄에.
자세한 내용은 여기를 참조 하십시오 https://www.python.org/dev/peps/pep-0263/