第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Unicode 錯(cuò)誤燒瓶 jinja2

Unicode 錯(cuò)誤燒瓶 jinja2

至尊寶的傳說(shuō) 2021-12-09 18:13:34
我希望在燒瓶上創(chuàng)建一個(gè)帶有 python 的網(wǎng)頁(yè),一切都很好,我強(qiáng)烈推薦燒瓶。但是當(dāng)涉及到 Unicode et 編碼時(shí),它在 python 網(wǎng)頁(yè)等之間總是很困難。所以我有一個(gè)表格,我在特定的燒瓶路線上發(fā)布,我得到了我的價(jià)值,我需要做一些小包裝來(lái)讓我的變量井井有條。我得到了這個(gè)字典:            task_formatted.append(str(item['entity']))我將它轉(zhuǎn)換為 str 然后我將它附加到一個(gè)列表中,這樣我就可以輕松地將它傳遞給我的模板我希望 str 在網(wǎng)頁(yè) python 頁(yè)面上呈現(xiàn)為 UTF-8:  # -*- coding: utf-8 -*- html頁(yè)面:  <meta charset="utf-8"/>然后我使用 jinja 在我的頁(yè)面中打印它們:            {% for item in task %}            <tr>              <td>{{item[0].decode('utf-8')}}</td>              <td>{{item[1].decode('utf-8')}}</td>              <td>{{item[2]}}</td>              <td>{{item[3]}}</td>              <td>{{item[4]}}</td>              <td><button id="taskmodal1"></td>            </tr>            {% endfor %}但是我的 item[0].decode('utf-8') 和我的 item[1].decode('utf-8')正在打?。簕'type': 'Asset', 'id': 1404, 'name': 'Test-Asset comm\xc3\xa9'}代替{'type': 'Asset', 'id': 1404, 'name': 'Test-Asset commé}我已經(jīng)在 python 端使用 .encode('utf-8') 嘗試了幾種方法,使用 unicode(str) 和 render_template().encode('utf-8') 而我的想法越來(lái)越少。公平地說(shuō),我認(rèn)為它們是我對(duì) Unicode 不理解的東西,所以我想得到一些解釋(不是文檔鏈接,因?yàn)槲液芸赡芤呀?jīng)閱讀了它們)或一些解決方案來(lái)讓它工作,對(duì)于我的程序能夠正確編寫 str 非常重要,我在 js http 調(diào)用后使用了它。謝謝PS:我使用的是python2
查看完整描述

3 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

我得到了這個(gè)字典:


task_formatted.append(str(item['entity']))

我將其轉(zhuǎn)換為 a str,然后將其附加到列表中,以便我可以輕松地將其傳遞給我的模板


這段代碼并沒(méi)有像你想象的那樣做。


>>> entity = {'type': 'Asset', 'id': 1404, 'name': 'Test-Asset commé'}

>>> str(entity)

"{'type': 'Asset', 'id': 1404, 'name': 'Test-Asset comm\\xc3\\xa9'}"

當(dāng)你調(diào)用str字典(或列表)時(shí),你不會(huì)得到調(diào)用str字典的每個(gè)鍵和值的結(jié)果:你得到每個(gè)鍵和值的代表。在這種情況下,這意味著“Test-Asset commé”已以難以逆轉(zhuǎn)的方式轉(zhuǎn)換為“Test-Asset comm\xc3\xa9”。


>>> str(entity).decode('utf-8')  # <- this doesn't work.

u"{'type': 'Asset', 'id': 1404, 'name': 'Test-Asset comm\\xc3\\xa9'}"

如果您想僅{{ item }}使用模板在模板中呈現(xiàn)您的字典,您可以使用 json 模塊來(lái)序列化它們而不是str. 請(qǐng)注意,您需要將 json(類型為str)轉(zhuǎn)換為unicode實(shí)例,以避免UnicodeDecodeError在呈現(xiàn)模板時(shí)出現(xiàn) 。


>>> import json

>>> template = jinja2.Template(u"""<td>{{item}}</td>""")

>>> j = json.dumps(d, ensure_ascii=False)

>>> uj = unicode(j, 'utf-8')

>>> print template.render(item=uj)

<td>{"type": "Asset", "id": 1404, "name": "Test-Asset commé"}</td>

一些一般性觀察/要點(diǎn):


不要使用str(或unicode) 來(lái)序列化字典或列表等容器;使用json或pickle等工具。

確保您傳遞給 jinja2 的任何字符串文字都是 的實(shí)例unicode,而不是str

使用 Python2 時(shí),如果您的代碼有可能處理非 ascii 值,請(qǐng)始終使用unicode,切勿使用str。


查看完整回答
反對(duì) 回復(fù) 2021-12-09
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

你做錯(cuò)了。

<td>{{item[0].decode('utf-8')}}</td>

你為什么添加decode?這是錯(cuò)誤的。我建議您不要放置任何轉(zhuǎn)換功能。UTF-8 可以正常工作(我認(rèn)為這是默認(rèn)設(shè)置)。在任何情況下,您都沒(méi)有解碼. 您正在將字符串編碼為 UTF-8(“編碼”:您使用代碼 UTF-8,“解碼”:從特定的編碼值到語(yǔ)義值:實(shí)際上在 python 中,您不應(yīng)該關(guān)心字符串在內(nèi)部如何編碼 [BTW 一種內(nèi)部編碼,一種 UTF-8、latin1、UTF-16 或 UTF-32,根據(jù)對(duì)整個(gè)字符串進(jìn)行編碼的最有效方法])。

只需刪除decode('utf-8'). 在python代碼上,你不應(yīng)該關(guān)心編碼和解碼,而應(yīng)該關(guān)心輸入和輸出:使用三明治規(guī)則。這將極大地簡(jiǎn)化字符串、邏輯的處理,并避免大多數(shù)錯(cuò)誤


查看完整回答
反對(duì) 回復(fù) 2021-12-09
?
慕無(wú)忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

我找到了解決我的問(wèn)題的方法:

unicodedata.normalize('NFKD', unicode(str(item['entity']['type']) + str(item['entity']['name']),'utf-8'))

首先,我用 str() 將我的 dict 轉(zhuǎn)換為一個(gè)字符串,然后在導(dǎo)入 unicodedata 后我用 unicode('str' , 'utf-8') end finaly 將它轉(zhuǎn)換為 UTF-8 Unicode 我使用 unicodedata.normalize()

希望它會(huì)幫助人們


查看完整回答
反對(duì) 回復(fù) 2021-12-09
  • 3 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)