2014-07-05 3 views
1

중국어로 된 페이지에 대한 중국 URL을 표시하려고합니다.유니 코드 형식의 key.id()를 얻는 방법

Key 클래스는 id()를 str으로 반환합니다.

pages = Page.query().fetch() 
for page in pages: 
    type(page.key.id()) 
    >> <type 'str'> 

나는 페이지의 URL을 저장하기 위해 엔티티 ID를 사용하고 있습니다. 내가 나의 URL 안에 중국을 사용하고 싶을 때까지 모두는 ok이었다. page.key.id()는 유니 코드를 반환하지 않으므로 Jinja는 디코딩시 오류를 발생시킵니다.

{%- for page in pages %} 
<a href="/admin/page/{{ page.key.id() }}">{{ page.key.id() }}</a> 
{%- endfor %} 

을 제공합니다

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128) 

을하지만, SDK 콘솔/데이터 저장소 뷰어 엔티티 ID로 중국어 문자열을 보여 완벽하게 할 수 있습니다. 그것은 실수 또는 URL로 엔티티 ID를 사용하는 GAE의 잘못된 사용

인가? 디자인을 변경해야합니까, 아니면 현재 디자인 작업을 할 수있는 방법이 있습니까?

답변

0

텍스트 편집기에 저장할 때 템플릿 파일 (somefile.html)이 일반 텍스트 파일이 아닌 UTF-8 인코딩으로 저장되어 있는지 확인하십시오. 템플릿의 HEAD 태그에

<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 

: 당신이 뭔가를 원할 것입니다, 또한

를 (예를 들어, 다른 이름으로 저장 대화로, UTF-8 인코딩을 선택).

+0

답장을 보내 주셔서 감사합니다. StringProperty 또는 TextProperty에서 유니 코드 콘텐츠를 표시하는 데 아무런 문제가 없습니다.이 경우 ndb가 유니 코드 파이썬 문자열을 반환한다는 것을 알 수 있습니다. 문제는 key.id() 반환 형식과 관련이 있다고 생각합니다. – user11012

+0

'views.py' 상단에'# - * - coding : utf-8 - * -'가 있습니까? 진자 태그에 마이너스 기호를 설명해 주시겠습니까? 나는 전에 사용 된 것을 보지 못했습니다. 템플릿이 ASCII 디코딩을 사용하고 있다는 오류가 계속 발생합니다. – GAEfan

+0

실제로 프로젝트 자체는 최신 버전이 아니더라도 [여기] (https://github.com/daseeds/pennsylvania)에서 볼 수 있습니다. 나는 당신이 모든 py 파일 위에 언급하는 제목을 가지고있다. (비록 내가 views.py를 가지고 있지는 않지만). 마지막으로 템플릿을 해석 할 때 진자에게 LF를 추가하지 말라고 말하고 있습니다. – user11012