0

我正在使用 BeautifulSoup 来解析一些 XML 文件。此文件中的字段之一经常使用 Unicode 字符。我尝试使用编码将 unicode 写入文件,但未成功。

到目前为止的过程基本上是:

  1. 获取名称

    gamename = items.find('name').string.strip()

  2. 然后将该名称合并到一个列表中,该列表稍后会转换为一个字符串:

    stringtoprint = userid, gamename.encode('utf-8') #

    newstring = "插入集合值" + str(stringtoprint) + ";" +"\n"

然后将该字符串写入文件。

listofgamesowned.write(newstring.encode("UTF-8"))

看来我不必如此频繁地进行 .encode 了。我曾尝试在解析名称时直接进行编码,例如gamename = items.find('name').string.strip().encode('utf-8')- 但是,这似乎不起作用。

目前 - 'Uudet L\xc3\xb6yt\xc3\xb6retket'

正在打印和保存,而不是 Uudet Löytöretket。

如果这是我正在生成的字符串,那么我会使用something.write(u'Uudet L\xc3\xb6yt\xc3\xb6retket'); 但是,它是嵌入在字符串中的一个元素。

4

1 回答 1

1

Unicode 是字符串的内存表示。当您写出或读入时,您需要编码和解码。

Uudet L\xc3\xb6yt\xc3\xb6retket是 的utf-8编码版本Uudet Löytöretket,所以它就是您要写出的内容。当您想从文件中读回字符串时,您需要对其进行解码。

>>> print 'Uudet L\xc3\xb6yt\xc3\xb6retket'
Uudet Löytöretket
>>> print 'Uudet L\xc3\xb6yt\xc3\xb6retket'.decode('utf-8')
Uudet Löytöretket

只需记住在输出之前立即编码并在读回后立即解码。

于 2013-01-20T19:03:10.607 回答