2016-12-13 2 views
5

Я хочу, чтобы прочитать файл JSON в Python, который содержит арабский текст, но арабский текст является выглядеть, что:Чтение Arabic из JSON файла

ط§ظ„ط³ظژط¹ظژط§ط¯ظژط©ظگ ظ„ظژظٹظگط³ظژطھظŒ ط§ظ„ط­ظژطµظŒظˆظژظ„ظژ ط¹ظژظ„ظ‰ظژ 
ظ…ط§ظژ ظ„ط§ظ†ظژظ…ظ„ظگظƒظژ ط¨ظژظ„ ظ‡ظگظٹظژ ط£ظ†ظژ ظ†ظژظپظ‡ظŒظ…ظژ 
ظˆظژظ†ظگط¯ط±ظژظƒظژ ظ‚ظژظٹظگظ…ط©ظڈ ظ…ظژط§ظ†ظژظ…ظ„ظƒ 

Как я могу читать правильные арабские буквы?

import sys 
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) 
print(x.translate(non_bmp_map)) 

x является параметром, который содержит арабское значение из JSON файла. Я ожидал получить это предложение: السعادة ليست الحصول على ما لانملك بل هي أن نفهم وندرك قيمة مانملك, но я получаю ط§ظ "ط³ظژط¹ظژط§ط¯ظژط © ظگ ظ" ظژظٹظگط³ظژطھظ Œ ط§ظ "طظژطμظ Œ ظظژظ" ظژ ط¹ظژظ "ظ ‰ ظژ ظ ... ط§ظژ ظ "ط§ظ † ظژظ ... ظ" ظگظ ƒ ظژ ط ط ظژظ ظ ظ ظگظٹظژ ط ظ ظ ظ ظ ظ ظژظپظ ظژظپظ ظژظپظ Œ Œ ظ ظ ظ ظظژظ ظ ظظژظ ظ ظ ط ط ط ط ط ط ط ط ط ط ... ظژط§ظ † ظژظ ... ظ "ظ ƒ

+1

вы могли бы показать (в вопросе) ORYGINAŁ данные, ожидаемый результат (и полное сообщение об ошибке, если вы получите один) – furas

+0

я ожидал получить это предложение: السعادة ليست الحصول على ما لانملك بل هي أن نفهم وندرك قيمة مانملك, но я получаю ط§ظ "ط³ظژط¹ظژط§ط¯ظژط © ظگ ظ" ظژظٹظگط³ظژطھظ Œ ط§ظ "طظژطμظ Œ ظظژظ" ظژ ط¹ظژظ "ظ ‰ ظژ ظ ... ط§ظژ ظ" ط§ظ † ظژظ ... ظ "ظگظ ƒ ظژ ط ¨ظژظ "ظ ‡ ظگظٹظژ ط ظ ظ † ظژ ظ † ظژظپظ ‡ ظ Œ ظ ... ظژ ظظژظ † ظگط¯ط ± ظژظ ƒ ظژ ظ ظ ... ط © ظڈ ظ ... ظژط§ظ † ظژظ ... «ظ ƒ –

+1

Кстати: как я уже говорил в предыдущем воздают - вы должны показать это в вопросе, не воздают. Это была важная информация, о которой идет речь - не все читают комментарии. – furas

ответ

3

Вы не упомянули, используете ли вы Python 3 или 2. В Python 3 строки по умолчанию являются unicode.

Если вы используете Python 2, используйте codec:

import codecs 
f = codecs.open('unicode.rst', encoding='utf-8') 
for line in f: 
    print repr(line) 

Ref: Unicode How-to


Можно, однако, что ваш входные данные не кодируются правильно. В этом случае вы можете попробовать использовать ftfy package.

ftfy обладает несколькими эвристиками для исправления сломанных/непоследовательных кодировок в кодировке Unicode. Из документов:

>>> from ftfy import fix_encoding 
>>> print(fix_encoding("(ง'⌣')ง")) 
(ง'⌣')ง 
+2

Hahahahah. Есть питон под названием «ftfy»? xD Какие захватывающие времена мы живем! –

+0

не работа. notepad показывают, что кодировка ANSI –

+0

> notepad показать, что кодировка ANSI –

Смежные вопросы