UTF8

2012-06-04 10 views
1

로 인코딩 I 파이썬을 사용하고 상기 트위터 API를 사용하여 사용자에 대한 데이터를 수신 할 때 데이터의 손실. 내가 얻는 것은 속성의 json 인코딩 된 dict입니다. 예를UTF8

{ 

"id": 123456789, 

"name": "ととり~む", 

"screen_name": "somescreenname", 

"description": "こんにちは♪ キャラ的にはこなたですが好きな子はつかさな私です。 ゲーム・漫画・アニメならなんでも好きです。 気が合う方はよろしくお願いします。 ", 

} 

참고 :이 내가받을 정확한 DICT 아니라, 질문에 대한 요약.

내 사용자 중 일부는 다른 언어로 된 데이터를 가지고 있습니다 (일본어). 내 사용자의 "이름"을 저장하고 싶습니다. 내가 사용하는 경우 :

data["name"].encode('utf8') 

나는 아직도이 ¯ チ ㄸ ¯ チ ㄸ ¯ ツ ハ ￯ ㅍ ゙ ¯ ツ タ 같은 일부 문자를 잃고 결국. 나는 어떤 자료도 잃고 싶지 않다. 내가 여기서 적용 할 수있는 가장 좋은 방법은 무엇인가?

+0

일부 실제 데이터가 바이트 단위로 표시됩니다. –

+0

사용'utf16'는 .... –

+0

는 @PriyankPatel/[UTF-8 (https://en.wikipedia.org/wiki/Utf8)는 [UTF-16] (HTTPS 유니 코드 코드 포인트의 동일한 범위를 커버 /en.wikipedia.org/wiki/UTF-16); U + 0000에서 U + 10FFFF까지. 만약 당신이 그것을 인코딩 할 수 없다면, 다른 것을 사용하는 것은 무의미하다. –

답변

3

실제로 데이터를 잃어 버리지는 않을 것입니다. 할 수 있어야합니다 :

data['name'].encode('utf8').decode('utf8') 

그리고 원래의 문자열로 돌아 가야합니다. 중간에 bytes 개체를 디스크에 기록한 다음 나중에 다시 읽어 와서 같은 효과로 디코딩 할 수 있습니다. 이 오히려 데이터 손실보다 거의 확실하게 표시 문제 -

은 당신이 걱정하는 것하면 인코딩 된 문자열을 인쇄 할 때 올 사각형 및 기타 넌센스입니다. 아마 터미널이 다른 인코딩으로 바이트를 해석하려고 시도하여 Mojibake이됩니다. 프로그램에서 인코딩을 신중하게 유지하는 한 문제가 발생하지 않습니다. 위의 왕복을 할 수 있는지 확인하십시오.

+1

+1 나를 가르치기위한 새로운 어휘! –