+ -
当前位置:首页 → 问答吧 → python 编码的问题,encode 重复调用多次出现的异常

python 编码的问题,encode 重复调用多次出现的异常

时间:2011-04-07

来源:互联网

  1. #! /usr/bin/env python
  2. #coding=utf-8

  3. import win32com.client
  4. update_session = win32com.client.Dispatch("Microsoft.Update.Session")
  5. update_searcher = update_session.CreateupdateSearcher()
  6. search_result = update_searcher.Search("IsInstalled=1")

  7. index = 1
  8. for item in search_result.Updates:
  9.     print "\r\n--------%d-------\r\n" %(index)
  10.     print "Title(%s):\t%s\r\nDescription(%s):\t%s"%(
  11.         type(item.Title),
  12.         item.Title.encode("gbk"),
  13.         type(item.Description),
  14.         item.Description.encode("gbk")
  15.         )
  16.     index += 1
  17.     #if index > 10 :break #这行注释掉后再运行看输出
复制代码
文件的编码是UTF-8,
我用的python2.7 安装了pywin32。

仅仅输出10个更新,输出的汉字都正常。
但去掉上面那行,由于我电脑上有100多个更新,输出较多,
然后,就会出现很多未能转换成gbk的汉字。

我是一名python新手,但对于这个问题,不知为何?各位高手指点。

作者: everettjf   发布时间: 2011-04-07

再说明一下现象:
1、如果输出前10条信息,那么输出的字体都是正确的编码,控制台上输出的是汉字,如下:
Windows Server 2003 安全更新程序 (KB93216

2、如果输出所有的信息,那么输出的字体就会有一部分正确,一部分乱码(未转换的utf-8),如下:
Windows Server 2003 \xb0\xb2\xc8\xab\xb8\xfc\xd0\xc2\xb3\xcc\xd0\xf2 (KB93216

作者: everettjf   发布时间: 2011-04-07