簡體   English   中英

如何在中文python中比較unicode類型和str類型?

[英]How can I compare unicode type with str type in python of Chinese?

我以python 2.7為例:

a = u'你好'
b = '你好'

我嘗試了以下代碼,但失敗了

print a.encode('UTF-8') == b #return False

如何比較它們相等?

我希望您使用的是python3 ,這兩個變量都是string您不需要更改為任何string 只需將它們兩者進行比較即可。

>>> a = u'你好'
>>> b = '你好'
>>> type(a)
<class 'str'>
>>> type(b)
<class 'str'>
>>> a == b
True

如果您使用的是python2您的嘗試將起作用。

很可能您的Python源文件未使用UTF-8編碼。 變量b將包含這些引號之間的任何字節 這些字節將取決於編碼。 例如

# coding: utf-8
print repr("你好")

打印: '\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd'

現在,如果我們將源文件另存為GB2312並更新聲明:

# coding: GB2312
print repr("你好")

打印: '\\xc4\\xe3\\xba\\xc3'

無論如何,如果您有一個帶有文本的字節數組,則還需要知道這些字節的編碼,否則將無法可靠地解釋它們。

如果無論源文件編碼如何,都需要UTF-8字節,則可以寫u'你好'.encode('utf-8')將始終返回'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM