来自数据库的我的字符串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实体?怎么样?
谢谢。
答案 0 :(得分:9)
首先,您应确保value
的类型为unicode,而不是字符串
value.encode('ascii', 'xmlcharrefreplace')
应该为您提供HTML enitites
>>> 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}}。浏览器应该很容易理解区域字符。