이니고데렌코디로어: # 39, & # 39 ascii&. # 39, t # 39, \xa0& u& can& 코텍이 인코딩합니다 문자 # 39. 위치에 20: 서수 않는 범위 (128)
39 m, 유니코드 문자를 다루는 문제가 i& 텍스트로 반입됨 다른 웹 페이지 (서로 다른 사이트). 보티풀소프 사용하고 있습니다.
문제는 항상 오류: 재현할 수 없습니다. 가끔 일부 페이지 및 it 수행됨 바프 이니고데렌코디로어 'a' 몸을 던지는 경우도 있습니다. 나도 날잡아 그냥 내가 생각할 수 있는 모든 일에 대해 아무 것도 찾지 못한 채 계속 사용할 수 있는, 그리고 난 니들이 던지기 함정이거나 유니코드 관련 오류:.
코드 중 단면에는 문제를 일으키는 아래와 같습니다.
agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
이것은 스택 추적 생산된 때 일부 문장열 스니핏 그들위에 실행됩니다.
Traceback (most recent call last):
File "foobar.py", line 792, in <module>
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
이 때문에 일부 하는 의심이 페이지 (또는 좀 더 구체적으로, 페이지 에서 일부 사이트), 반면 다른 인코딩 안됨 인코딩되어 있을 수도 있을 수 있습니다. 영국에서 모든 사이트의 데이터를 기반으로 하고 있어 소비율에 제공하십시오 의미하는 영국 이외의 다른 언어로 작성된 텍스트 또는 국제화 관련된 문제가 없습니다 다루는 실행하십시오.
누구 수 있도록 지속적으로 이 문제를 해결할 수 있는 아이디어를 방법과 이 문제를 해결할 수 있을까?
1220
27
You need to read 파이썬 [유니코드 따라하기 name] (https://docs.python.org/2.7/howto/unicode.html). 이 오류는 이 [매우 첫 번째 사례] (https://docs.python.org/2.7/howto/unicode.html # 유니코드 문자).
기본적으로 사용 중지 ',' 변환하십시오 str unicode 를 인코딩되지 text / 바이트입니다.
대신 적절히 사용하여 ['이니고데 ()'] (http://docs.python.org/library/stdtypes.html # 스트라이니고데) 인코드할 문자열.
또는 작동합니까 완전히 지시하는 기호이다.
이는 클래식 파이썬 유니코드 문제점! 다음 사항을 고려해야 합니다.
모두 좋은 지금까지 str (a), # 39 의 지켜보리니 let& 신앙이니라 우리들은 어떻게 됩니까.
오 딥, that& # 39 의 모든 좋은 사람이 하는 일은 없습니다! 오류를 해결하는, 명시적으로 사용할 수 있는 어떤 코텍이 이니고데 취해하고 python 이 바이트입니다 인코딩합니다.
Voil\u00E0!
문제는 전화하시기 때 str () 는 기본 문자 인코딩, 파이썬, 이는 네 경우엔 제공한 인코딩합니다 시도하시려면 및 바이트 유니코드 문자를 표현을 경우도 있다. 이 문제를 해결하려면 할 수 있는 문자열 처리 방법을 사용하여 떠날려하면 파이썬 이니고데 (& # 39, whatever_unicode& # 39;) 주고 있습니다. 대부분의 경우 utf-8 사용하여 문제가 없어야 합니다.
이번 전시회에 대한 훌륭한 http://schmidt. devlib. 네드 Batchelder& # 39 의 파이컨 이 주제에 대해 말할 수 있습니다. http://nedbatchelder.com/text/unipain.html
내가 찾은 가져다줄래요 계속 렉시한테서 문자열이 문자열을 지루려면 심볼에는 우아한 문제를 해결하려면 다음과 같다.
39 을 사용하는 것이 중요한 it& 무시 옵션은 자동으로 알 수 있기 때문에 위험한 떨어트림 모든 유니코드 지원을 받아 사용하는 코드가 (및 인터내셔널리제이션) 이 알 수 있듯이 여기 (유니코드 변환):
everything but 난 후 약 한 다음, 이를 통해 인터넷 검색 도움이 되지 않았다고 생각했어요. 파이썬 2.7 사용 중입니다.
환경 변수 설정 문제를 겪고 있어 미묘한 인쇄할 수도, 실패할 수 잘못된 예. 여기 LC_ALL 설정되었습니다 C" ";). 데비안 그들은 설정값입니다 행위) 에 있다. 데비안 wiki 의 로케일에
나에게 어떤 방법이 주효했는가 없었다.
따라서 누군가가 바란다.
39 건, 그냥 내 것으로 대부분의 arts), ve i& 실제로 이들 문자를 아웃해야 훨씬 간단합니다.
문제는 you& 하고, 무릎은 doesn& 유니코드 문자 # 39, re 인쇄하려면 털미널 # 39, 이를 지원할 수 없다.
'그' 패키지 설치 언어팩의 en 해결하십시오 시도해 볼 수 있습니다.
영어 번역이 지원되는 모든 패키지를 제공하는 데이터 업데이트 (파이썬 등). 필요한 경우 다른 언어 패키지 설치 (문자 # 39 인쇄하려면 you& 따라 하고, re).
39 에 대한 일부 리눅스 배포판에서 it& 위해 필요한 기본 영어 로켈은 설치 제대로 있는지 확인하기 위해 (따라서 유니코드 문자를 통해 처리할 수 있습니다 / 쉘로 털미널). 가끔 it& # 39 을 설치하려면 간소화하는지 configuring 것보다 직접.
그럼 언제 코드 작성, 오른쪽 코드에서 인코딩입니다 사용해야 합니다.
예를 들면 다음과 같습니다.
39, ve you& 문제가 계속될 경우, 다음과 같은 두 번 시스템 구성을 확인합니다.
LANG = " en_US.UTF-8"; LC_ALL = " en_US.UTF-8";
또는:
Utf-8 lc_all = c Utf-8 lang = c
a 로케일에 그렙 " utf-8";
문제 및 솔루션 시연 신선한 vmo.
유랑하는 init ubuntu/trusty64. 유랑하는 up. 유랑하는 ssh
sup> <. (참조: support. unbuntu 사서함의 /sup> .<;).
c $ & # 39, 파이썬, & # 39, 보기인쇄 (\u2122" u";) 역추적 (가장 최근 매입옵션 마지막): ,, 1 호선, 의 파일 " < string> " < module>; 이니고데렌코디로어: # 39, & # 39 ascii&. # 39, t # 39, \u2122& u& can& 코텍이 인코딩합니다 문자 # 39. 위치 0: 서수 않는 범위 (128)
$ sudo apt 확보하십시오. install 언어팩의 en - y 다음 추가 패키지 설치됩니다. 언어팩의 en 기본 생성 로켈을. en_GB.UTF-8. /usr/sbin/locale-gen: 수행되 생성되었습니다.
c $ & # 39, 파이썬, & # 39, 보기인쇄 (\u2122" u";) ™
$ LC_ALL = c - c & # 39, UTF-8 파이썬, & # 39, 보기인쇄 (\u2122" u";) ™
시도하시겠습니까 해결할 수 있습니다,
아래의 스크립트는 추가 맨 앞에 선 (또는 다음의 두 번째 행):
39 의 정의는 that& 파이썬 소스 코드 인코딩입니다. 자세한 정보 입력 [PEP 263] (https://www.python.org/dev/peps/pep-0263/).
의 쉘로:
a 로케일에 그렙 " utf-8";
익스포트를 LC_ALL = $ (로케일에 - a 그렙 utf-8)
또는 수동으로 다음과 같습니다.
utf-8 익스포트를 LC_ALL = c
파이썬 - c & # 39, & # 39 보기인쇄 (\u2122" u";;;
위 테스트됨 unbuntu 의.
S # 39 의, 이른바 " 레이싱 here&, 일부 다른 경찰이 out". 답변. 단순히 공을 멀리 가지 못하는 상황을 번거로움을 문자 / 문장열 불구하고 좋은 인프라일까요 솔루션이므로 목마르겠구나 반대 목소리를 높였다
테스트 있다.
결과:
제안: 이 기능을 이름을 붙일 수 있습니다 '대신' 트로이시리? # 39 의 that& 것은 기본.
난 항상 첫 번째 두 줄의 동일팔레트에 아래 코드는 파이썬 파일:
단순 보조 기능을 늑대굴에서 here.
추가하기만 인코딩합니다 (& # 39, utf-8& # 39;) 를 변수
단말기 및 불지옥의 열어 주세요 아래 명령:
아래 솔루션이므로 추가한 협력했습니다 for me,
>. u " String";
내 앞에 문자열 (string 사이트용 유니코드로).
그냥 함께사용할 다음과 같습니다.
이에 대해 확인하는 문서를 말한다.
>. 반품하십시오 이니고데다타오노마리즈 (양식, 어니스트) 형식의 역사 >. 유니코드 문자열을 어니스트. 유효값 양식 are "NFC", "노프크스" >. "노프트" 및 "노프리드." >. >. 유니코드 표준에 eventtest 다양한 형태의 유니코드 정규화 >. 문자열 정의를 바탕으로 정식 대등을 및 >. 호환성에서는 대등을. 유니코드 문자를 사용할 수 있는 몇 가지 >. 다양한 방식으로 표현했다. 예를 들어, U + 00C7 (라틴 문자 >. E0100042.log 대문자 C 에 세디유) 로 표현할 수도 있습니다. >. U + 0043 (라틴 대문자 C) U + 0327 (결합 세디유). >. >. 각 문자에 대한 두 가지 일반 양식: c 와 역사 >. 역사 D. 역사 깊은 번호라고도 ᄃ씨 (노프트) >. 분해 및 각 문자를 구체화합니다 악취가 양식을 채택하고 있습니다. >. C (NFC) 분해 후 정규 첫 번째 qic 역사 >. 다시 사전 결합됨 구성되어있으며, 그 문자. >. >. 이와 같은 두 형태, 두 가지 일반 양식 >. 호환성에서는 기반으로 동등성의. 일부 문자는 유니코드 에서 >. 일반적으로 다른 캐릭터와 함께 사용할 수 있는 통합 될 것 "이라고 말했다. 대한 >. 예, U + 2160 (로마 숫자 1) 는 정말 똑같은 0049 로 U + >. (라틴 대문자 I). 그러나 대한 유니코드로 지원됩니다. >. 기존의 문자 집합 (예를 들어 gb2312) 와의 호환성. >. >. 일반 양식 KD (노프리드) 가 적용하십시오 호환성에서는 분해, >. 즉, 모든 호환성에서는 대체하십시오 캐릭터와 그들의 산정한다. 이 >. kc (노프크스) 를 먼저 호환성을 qic 분해, 역사 >. 그 뒤를 이어 정식 컴포지션입니다. >. >. 유니코드 문자열을 경우에도 동일하게 정상화 및 두 수 있다. >. 이 경우, 다른 사람의 판독기에서 문자와 결합한 싫어하겠어 >. 그들은 비교해서 같을 수 없습니다.
해결할 수 있는 it for me. 쉽고 간단한.
우리는 '장고' (manage.py) 에서 실행할 때 이 오류가 발생 마이그레이션합니다 관찰지역 함께 선정되었다.
- - 우리 들어 '소스 코드: utf-8 은 - - 위해 구성된 '선언, MySQL 의 값을 제대로 경식도 unbuntu utf8 및 적절한 언어팩의 / etc / 기본 / 로케일에' 및 '.
이 문제는 단순히 '랑' 놓치고 있는 것은 장고 컨테이너입니다 (우리가 사용하는 부두 노동자) 는 env var.
'와' 설정 '랑' 을 en_US.UTF-8 재시작하기 컨테이너입니다 재실행 마이그레이션과 전에 문제가 해결되었습니다.
이 은 파이썬 least.* 있었느뇨 라고 3 일
파이썬 3*
그래서 가끔 있는 환경 변수 및 니콘딩 오류:
여기서 오류는 에서 무시됨 인코딩입니다.