【问题标题】:How to convert UTF8 string into HTML string in python 2.5 for correct accent displaying?如何在 python 2.5 中将 UTF8 字符串转换为 HTML 字符串以正确显示重音?
【发布时间】:2012-06-26 10:13:23
【问题描述】:

来自数据库(以 UTF8 编码的 CSV 文件)的字符串 UFT8 在浏览器上显示如下,我的 main.py 代码为: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实体?怎么做?

谢谢。

【问题讨论】:

  • 您的更改正确但令人费解——我假设错误在其他地方。字符串存储在哪里?在代码中?它是如何存储在那里的?我们需要更多代码。如果您的代码在您添加 coding 注释之前实际运行,那么您的代码实际上并不包含 UTF-8 字符串,否则 Python 会报错。

标签: python html utf-8


【解决方案1】:

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

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

应该给你 HTML 实体

Python Unicode Documentation

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

【讨论】:

  • 非常感谢!我添加到我的代码中: value = unicode(value) value = value.encode('ascii','xmlcharrefreplace') 并且它工作得很好。非常感谢 !菲利普
  • 很高兴它有帮助.. 不要忘记选中答案复选框,如果它被标记为已解决,将会帮助其他有类似问题的人!
【解决方案2】:

在代码中嵌入 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 &agrave billes" 以便在浏览器中正确显示为 roulement à billes。

您不需要这样做,除了那些会干扰 HTML 本身的内容,例如 &lt;&gt; 等等。

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

【讨论】:

  • 感谢您的帮助!菲利普
猜你喜欢
  • 2014-01-29
  • 2016-09-04
  • 2011-01-21
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多