2012-08-15 3 views
1

유니 코드 문자열을 JSON에 저장하여 유니 코드 코드 포인트를 실제 문자로 바꿀 수 있습니까? JSON에 포팅이 같은 딕셔너리를 가지고 예를 들어파이썬에서 코드 포인트가 아닌 문자로 유니 코드 코드 포인트를 저장하는 방법

, ... :

dict1[u'N\u00e1utico'] = 2 

...는 코드 포인트와 덤프있는 대신에, 키는 실제 문자열?

로 덤프 할 수
Náutico 

문자를 나타낼 때 인쇄가 잘되지만 인쇄 할 때마다 잃어 버리게됩니다. 감사.

+2

더 중요한 질문은 JSON이 허용하는지 여부와 JSON 출력을 읽어야하는 사람이 지원하는지 여부입니다. – delnan

+0

그것은 데이터베이스에 이식 된 후 가장 많이 사용되는 온라인 것입니다. – user1549620

답변

4

JSON을 쓰는 라이브러리는 표준 ASCII 범위를 벗어나는 문자에 대해 유니 코드 코드 포인트를 제공하며 JSON (브라우저 포함)을 읽을 수있는 라이브러리는이를 올바르게 표시합니다. 문자열이 JSON으로 표현 될 때 악센트 부호가있는 문자가 필요하다고 생각하는 이유가 확실하지 않지만 코드 명을 제공하는 상호 교환 형식이 올바른 동작입니다.

+2

읽을 수있는 JSON은 디버깅 목적으로는 유용 할 수 있지만 교환 형식으로 비 ASCII 문자가 전송 중에 어딘가에서 파괴 될 수 있다고 가정하기로했습니다. –

+0

이 게임의 마지막 게임은 JSON을 데이터베이스에 포팅하여 온라인 상태로 사용할 가능성이 높습니다. 가능한 방법이 있는지 궁금 해서요. 그렇지 않으면 제대로 읽을 수있는 출력 장치가 될 것입니다. 당신의 설명은이 점에서 정말 도움이되었습니다, 감사합니다! – user1549620

1

\u 이스케이프 대신 ASCII 문자가 아닌 문자를 원시 문자로 포함 하시겠습니까? 그렇다면 :

>>> print json.dumps({u'N\u00e1utico': 2}, ensure_ascii= False) 
{"Náutico": 2} 
+0

그건 좋은 대답이기도하고, 디버깅에서 가독성을 위해 알아 두어야 할 가치가 있습니다. 실제로 유가 값은 필요하지 않지만 유스 케이스로 설명하는 것에 대해서는 무엇이든 가치가있는 웹 앱이나 브라우저는로드가 필요할 때 올바르게로드하고 표시합니다. –