[英]Using unicode with SQLAlchemy and Pyramid
我有一個textbox
,一個button
和一個search
功能。 在搜索功能中,我從textbox
獲取請求並使用:
queryE = queryE.filter(queryE.Campaign.CampaignName.like("%"+CampaignsKeyWord+"%"))
如果關鍵字只是拉丁編碼,結果是可以的,但是當我輸入unicode (例如,中文或日文)時,它不起作用。
例如おはようございます
是我在db ok中的字符串? 當我輸入います
來搜索它會比較並給我おはようございます
結果,對吧? 但事實並非如此。 當我打印おはようございます
,我可以在屏幕上看到ã?Šã?¯ã‚ˆã?†ã?”ã?–ã?„ã?¾ã?™
這是被視為Windows-1252的おはようございます
的UTF-8字節。 典型的Windows終端或具有未設置內容類型字符集的網頁。 但是你不必擔心,你的程序正在輸出有效的UTF-8,只需比較它們:
你看到轉換為Windows-1252:
e3 3f 8a e3 3f af e3 82 88 e3 3f 86 e3 3f 94 e3 3f 96 e3 3f 84 e3 3f be e3 3f 99
UTF-8的預期結果:
e3 81 8a e3 81 af e3 82 88 e3 81 86 e3 81 94 e3 81 96 e3 81 84 e3 81 be e3 81 99
這里唯一的區別是0x3f
( "?"
)而不是0x81
,這是因為Windows-1252未定義0x81
。
這只是將使用的編碼聲明到接收端的問題,您可以使用金字塔:
response.charset = 'utf8'
請注意,這是一個網頁,如果你的意思是Windows終端只是忘了它。
如果您的金字塔模板或該頁面的響應沒有正確的字符編碼集,則可能導致文本變為亂碼。 我可能是錯的,但從提供的信息來看,它聽起來更像是與Pyramid或SQLAlchemy有關的HTML文檔。 如果Python在解碼諸如日語的文本時遇到問題,則可能會引發UnicodeDecodeError,而不是嘗試輸出文本亂碼。
如果您在金字塔中使用模板,例如Chameleon,則可能在其元標記中設置了錯誤的編碼。 如果是這樣,請嘗試在模板中切換到'utf-8',類似於:
<meta charset="utf-8">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.