如何在Django中获取阿拉伯字符串的Unicode表示?

时间:2016-11-04 13:45:43

标签: python django unicode python-2.x

我想知道如何在Python中获取像سلام这样的阿拉伯字符串的Unicode表示形式?

结果应为\u0633\u0644\u0627\u0645

我需要这样才能比较从mysql db检索到的文本和redis缓存中存储的数据。

4 个答案:

答案 0 :(得分:2)

假设您有一个实际的Unicode字符串,您可以

# -*- coding: utf-8 -*-
s = u'سلام'
print s.encode('unicode-escape')    

<强>输出

\u0633\u0644\u0627\u0645

# -*- coding: utf-8 -*-指令纯粹是为了告诉解释器源代码是UTF-8编码的,它与脚本本身如何处理Unicode无关。

如果您的脚本正在从UTF-8编码的源中读取该阿拉伯字符串,则字节将如下所示:

\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85

您可以将其转换为Unicode,如下所示:

data = '\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85'
s = data.decode('utf8')
print s
print s.encode('unicode-escape')  

<强>输出

سلام
\u0633\u0644\u0627\u0645

当然,您需要确保将终端设置为正确处理Unicode。

请注意

'\u0633\u0644\u0627\u0645'

是包含24个字节的普通(字节)字符串,而

u'\u0633\u0644\u0627\u0645'

是包含4个Unicode字符的Unicode字符串。

您可能会发现这篇文章很有用:Pragmatic Unicode,由SO资深人士Ned Batchelder撰写。

答案 1 :(得分:0)

在python 2.x中添加u字符串,这使得字符串成为unicode字符串。然后,您可以调用unicode字符串的encode方法。

arabic_string = u'سلام'
arabic_string.encode('utf-8')

输出:

print arabic_string.encode('utf-8')
'\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85'

答案 2 :(得分:0)

对于python 2.7

string = 'سلام'
new_string = unicode(string)

答案 3 :(得分:0)

由于您使用的是Python 2.x,因此无法使用encode。您需要使用unicode函数将字符串转换为unicode对象。

> f='سلام'
> f
'\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85'
> unicode(f, 'utf-8') # note: you need to pass the encoding parameter in or you'll 
                      # keep having the same problem.
u'\u0633\u0644\u0627\u0645'
> print unicode(f, 'utf-8')
سلام

我不确定您使用哪个库来获取内容,但您最初可能会以unicode的形式获取数据。

> f = u'سلام'
> f
u'\u0633\u0644\u0627\u0645'
> print f.encode('unicode-escape')
\u0633\u0644\u0627\u0645
> print f
سلام