如何在python 2.5中将UTF8字符串转换为HTML字符串以进行正确的重音显示?

时间:2012-06-26 10:13:24

标签: python html utf-8

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

=>如何将任何此类字符串转换为HTML实体,例如value =“roulement& agrave billes”,以便使用浏览器正确显示为roulement à billes

我试图添加:

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

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

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

但它不会改变任何东西

=>那么,可能是另一种方式是将其翻译成html实体?怎么样?

谢谢。

2 个答案:

答案 0 :(得分:9)

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

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

应该为您提供HTML enitites

Python Unicode Documentation

>>> value = u"roulement \u00e0 billes"
>>> print value
roulement à billes
>>> print value.encode('ascii', 'xmlcharrefreplace')
roulement à billes
>>>

答案 1 :(得分: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&amp; agrave billes”,以便通过浏览器正确显示为roulementàbilles。

您不应该这样做,除了那些干扰HTML本身的内容,例如<>以及其他内容。

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