国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Unicode

2018-02-24 15:39 更新

Jinja2 內(nèi)部使用 Unicode ,這意味著你需要向渲染函數(shù)傳遞 Unicode 對(duì)象或只包含 ASCII 字符的字符串。此外,換行符按照默認(rèn) UNIX 風(fēng)格規(guī)定行序列結(jié)束(?\n?)。

Python 2.x 支持兩種表示字符串對(duì)象的方法。一種是?str?類型,另一種是?unicode?類型,它們都繼承于?basestring?類型。不幸的是,默認(rèn)的?str?不 應(yīng)該用于存儲(chǔ)基于文本的信息,除非只用到 ASCII 字符。在 Python 2.6 中,可以 在模塊層指定?unicode?為默認(rèn)值,而在 Python 3 中會(huì)是默認(rèn)值。

要顯式使用一個(gè) Unicode 字符串,你需要給字符串字面量加上?u?前綴:?u'H?nsel?undGretel?sagen?Hallo'?。這樣 Python 會(huì)用當(dāng)前模塊的字符編碼來(lái) 解碼字符串,來(lái)把字符串存儲(chǔ)為 Unicode 。如果沒(méi)有指定編碼,默認(rèn)是?ASCII?, 這意味著你不能使用任何非 ASCII 的標(biāo)識(shí)符。

在使用 Unicode 字面量的 Python 模塊的首行或第二行添加下面的注釋,來(lái)妥善設(shè) 置模塊編碼:

# -*- coding: utf-8 -*-

我們推薦為 Python 模塊和模板使用 utf-8 編碼,因?yàn)樵?utf-8 中,可以表示 Unicode 中的每個(gè)字符,并且向后兼容 ASCII 。對(duì)于 Jinja2 ,模板的默認(rèn)編碼 假定為 utf-8 。

用 Jinja2 來(lái)處理非 Unicode 數(shù)據(jù)是不可能的。這是因?yàn)?Jinja2 已經(jīng)在語(yǔ)言層 使用了 Unicode 。例如 Jinja2 在表達(dá)式中把不間斷空格視為有效的空格,這需要 獲悉編碼或操作一個(gè) Unicode 字符串。

關(guān)于 Python 中 Unicode 的更多細(xì)節(jié),請(qǐng)閱讀完善的?Unicode documentation?。

另一件重要的事情是 Jinja2 如何處理模板中的字符串字面量。原生實(shí)現(xiàn)會(huì)對(duì)所有 字符串字面量使用 Unicode ,但在過(guò)去這是有問(wèn)題的,因?yàn)橐恍?kù)顯式地檢查它 們的類型是否為str?。例如?datetime.strftime?不接受 Unicode 參數(shù)。 為了不徹底破壞它, Jinja2 對(duì)只有 ASCII 的字符串返回?str,而對(duì)其它返回?unicode:

>>> m = Template(u"{% set a, b = 'foo', 'f??' %}").module
>>> m.a
'foo'
>>> m.b
u'f\xf6\xf6'
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)