문제

Python,문자열 수 있습니코드(모두 utf-16,utf-8)및 싱글-다른 바이트 인코딩(cp1251,cp1252etc.).체크인은 가능한 인코딩은 무엇이 문자열입니까?예를 들어,

time.strftime( "%b" )

이 문자열을 반환하는 텍스트 이름입니다.MacOS 에서 반환된 문자열됩 utf-16,Windows 영어 로컬 것이 하나의 byte ascii 인코딩,윈도우에서 비 영어캘 될 것이다 인코딩을 통해 해당 국가의 코드페이지,예를 들어 cp1251.나는 어떻게 처리 등의 문자열?

도움이 되었습니까?

해결책

문자열을 저장하지 않는 모든 정보를 인코딩을 지정할 때 하나로 변환하여/에서는 유니코드하거나 인쇄하는 출력 장치:

import locale
lang, encoding = locale.getdefaultlocale()
mystring = u"blabla"
print mystring.encode(encoding)

UTF-8 유니코드를,그것은 유니코드 인코딩으로 하나의 바이트는 문자열입니다.

하는 것이 가장 좋습니다 유니코드에 모든 곳에서는 파이썬 측 저장할 문자열과 함께는 유니코드 인코딩을 가역과 같은 UTF-8,변환 멋진 곳에 대해서만 사용자가 출력됩니다.

다른 팁

charset 인코딩 검색은 매우 복잡합니다.

그러나,당신의 목적에 대한 이?하려는 경우에는 값에는 유니코드,단순히 작성

unicode(time.strftime("%b"))

그리고 그것은 작동에 대한 모든 경우에 당신은 위에서 언급:

  • mac os:유니코드(유니코드)->유니코드
  • win/eng:유니코드(ascii)->유니코드
  • win/noneng:유니코드(some_cp)->로 변환됩니다에 의해 현지 cp->유니코드

이 있는 경우 합리적으로 긴 문자열에는 알 수 없는 인코딩을 시도할 수 있습니다 추측하고 인코딩 예보편적인 인코딩 감지기에 https://github.com/dcramer/chardet --고장이 없지 않지만,때때로 그것은 바로 추측;-).하지만 많은 도움이되지 않습으로 매우 짧은 문자열입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top