我想在Python中读取包含阿拉伯语文本的JSON文件,但阿拉伯语文本显示为:
ط§ظ„ط³ظژط¹ظژط§ط¯ظژط©ظگ ظ„ظژظٹظگط³ظژطھظŒ ط§ظ„طظژطµظŒظˆظژظ„ظژ ط¹ظژظ„ظ‰ظژ
ظ…ط§ظژ ظ„ط§ظ†ظژظ…ظ„ظگظƒظژ ط¨ظژظ„ ظ‡ظگظٹظژ ط£ظ†ظژ ظ†ظژظپظ‡ظŒظ…ظژ
ظˆظژظ†ظگط¯ط±ظژظƒظژ ظ‚ظژظٹظگظ…ط©ظڈ ظ…ظژط§ظ†ظژظ…ظ„ظƒ
如何阅读正确的阿拉伯字母?
import sys
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
print(x.translate(non_bmp_map))
x
是包含来自JSON文件的阿拉伯语值的参数。
我期待得到这句话:但是我得到了ط§ظ“طظژظژط¹ظژط§ط¯ظژط©ظگظ”ظژظٹظگط³ظژطھظŒططظظ“طظژطμظŒ”ظژط¹ظژظ“ظ‰ظژظbutكك ...ط§ظژظ“ظظظظژظظظظژظظژظظژظظژظظژظظژظظژظظژظظژظظژظظژظظژظ£££ظظظظظظظظظ±±±±±±±±±.....ظ±± ظژط§ظ†ظژظ...ظ“ظƒ
答案 0 :(得分: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)
但是,您的输入数据可能未正确编码。在这种情况下,您可以尝试使用ftfy
package。
ftfy
实现了几种启发式方法来修复损坏/不一致的unicode编码。来自文档:
>>> from ftfy import fix_encoding
>>> print(fix_encoding("(ง'⌣')ง"))
(ง'⌣')ง