我想在Python中读取包含阿拉伯文本的JSON文件,但阿拉伯文本显示如下:
ط§ظ„ط³ظژط¹ظژط§ط¯ظژط©ظگ ظ„ظژظٹظگط³ظژطھظŒ ط§ظ„طظژطµظŒظˆظژظ„ظژ ط¹ظژظ„ظ‰ظژ
ظ…ط§ظژ ظ„ط§ظ†ظژظ…ظ„ظگظƒظژ ط¨ظژظ„ ظ‡ظگظٹظژ ط£ظ†ظژ ظ†ظژظپظ‡ظŒظ…ظژ
ظˆظژظ†ظگط¯ط±ظژظƒظژ ظ‚ظژظٹظگظ…ط©ظڈ ظ…ظژط§ظ†ظژظ…ظ„ظƒ
我怎样才能读出正确的阿拉伯字母?
import sys
non_bmp_map = dict.fromkeys(range(0x10000,sys.maxunicode + 1),0xfffd)
print(x.translate(non_bmp_map))
x是包含来自JSON文件的阿拉伯值的参数.
我期待得到这句话:但是我得到了ط§ظ“طظژظژط¹ظژط§ط¯ظژط©ظگظ”ظژظٹظگط³ظژطھظŒططظظ“طظژطμظŒ”ظژط¹ظژظ“ظ‰ظژظbutكككك …ط§ظژظ“ظظظظژظظظظژظظژظظژظظژظظژظظژظظژظظژظظژظظژظظژظظژظ£££ظظظظظظظظظ±±±±±±±±±…..ظ±± ظژط§ظ†ظژظ…ظ“ظƒ
最佳答案
您没有提到是否使用Python 3或2.在Python 3中,字符串是unicode,默认情况下.
如果您使用Python 2,请使用编解码器:
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("(ง'⌣')ง"))
(ง'⌣')ง