3

我的字符串 UFT8 来自数据库(以 UTF8 编码的 CSV 文件)在带有我的 main.py 代码的浏览器上显示如下:value ="roulement \u00e0 billes"

=> 如何将任何此类字符串转换为 HTML 实体,例如 value="roulement à billes" 以便像roulement à billes浏览器一样正确显示。

我试图添加:

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

在我文件的第一行,还有:

 self.response.headers['Content-Type'] = 'text/html;charset=UTF-8'

但它不会改变任何东西

=> 所以,可能另一种方式是将其翻译成 html 实体?如何 ?

谢谢你。

4

2 回答 2

9

首先,您应该确保value是 unicode 类型而不是字符串

value.encode('ascii', 'xmlcharrefreplace')

应该为您提供 HTML 实体

Python Unicode 文档

>>> value = u"roulement \u00e0 billes"
>>> print value
roulement à billes
>>> print value.encode('ascii', 'xmlcharrefreplace')
roulement à billes
>>>
于 2012-06-26T10:25:57.050 回答
1

要在代码中嵌入 unicode 字符串文字:

a) 确保您的源文件采用 UTF-8 格式(并添加该# -*- coding行),然后直接使用文字:

u'Zażółć gęślą jaźń'

b) 以 unicode 文字转义它们:

u"roulement \u00e0 billes"

在这两种情况下,您都需要使用unicode类型,而不是str类型,因此在您的文字前加上u.

>>> type("kos")
<type 'str'>
>>> type(u"kos")
<type 'unicode'>

如何将任何此类字符串转换为 HTML 实体,例如 value="roulement à billes" 以便在浏览器中正确显示为 roulement à billes。

你不应该这样做,除了那些干扰 HTML 本身的东西,比如<or>和更多。

只需将您的 HTML 文件编码为 UTF-8 并确保浏览器会选择编码(响应内容类型很酷,您也可以放入<meta charset="UTF-8"><meta http-equiv="content-type" content="text/html; charset=UTF-8">inside <head>。区域字符应该很容易被浏览器理解。

于 2012-06-26T10:32:00.170 回答