如何使用python从unicode转换

时间:2010-03-02 23:33:22

标签: python unicode

在数据库中,我保存了一个字符串,其中的问题是:za \ u016​​1 \ u010diten。

[编辑:“问题词”似乎已经改变了]

当我想在我的页面上显示此字符串时(使用 req.write(string))。我收到此错误: UnicodeEncodeError:'ascii'编解码器无法编码位置686-687中的字符:序号不在范围内(128)

我在Windows上使用Python 2.X | linux | Mac。 [编辑:选择一个]
我的字符串实际上名为html_h2。以下是我被问到的详细信息: [编辑:为了易读性插入了空格]

>> print type(html_h2)
<type 'unicode'>
>> print repr(html_h2)
u"\n<table bgcolor='white' border=1 cellpadding=2 cellspacing=1 rules=rows frame=box>
  <tr>
    <td align='center'>
      <img src=img/_up/upload/2010/03/03/… width=120 height=100/>
    </td>
    <td align='left' style=width:86%>
      <h3>V Gr\u010diji kot v vojni</h3>
      Gr\u0161ki premier je finan\u010dne razmere v dr\u017eavi, ki je skoraj pred bankrotom, primerjal z razmerami v vojni. Napovedani so ostri var\u010devalni ukrepi.
    </td>
  </tr>
</table>"

我在%s的字符串中插入数据库字段。 [编辑:无关]

当我这样做时,伊格纳西奥建议:

req.write(html_h2.encode('XXXXXX'))

其中XXXXXX是我在Content-Type标头中声明的字符集,会发生这种情况:

[编辑:删除未发生的结果]
(1)显示就像我希望的那样 (2)我收到一条错误消息:XXXXXXXXXXXXXXXXXXXXXXXXXX

2 个答案:

答案 0 :(得分:2)

req.write(string.encode(encoding))

其中encoding是您在Content-Type标题中声明的字符集。

答案 1 :(得分:0)

如果string引用string模块,则表示string没有encode。如果string实际上是unicode个对象,那么它确实有一个encode,但也许string可能实际上是str个对象。

回到基础:请给我们一些信息。

请显示以下结果:

# Python 2.X
print type(string)
print repr(string)

# Python 3.X
print(type(string))
print(ascii(string))

然后我们可以给你明智的建议,而不是不知情的猜测。

注意:请编辑您的问题以显示输出,不要在评论中回复。使用复制/粘贴,不要从内存中键入。