Skip to main content
 首页 » 编程设计

python之如何在 python 中从 unicode 转换为 utf8

2024年10月25日6davidwang456

我正在使用我的 python 脚本从 sqlite3 数据库中为 xbmc 媒体应用程序提取数据。

我可以看到,在我的代码中,它将使用 unicode 对象提取数据,其中我将拥有字符串 (u'uL.

我想将它转换回从 unicode 对象到 utf8 的普通字符串。

代码如下:

programs = None 
daysLimit = 14 
start = datetime.datetime.now() 
end = start + datetime.timedelta(days = daysLimit) 
cur.execute('SELECT channel, title, start_date, stop_date FROM programs WHERE channel') 
programs = cur.fetchall() 
 
print(programs) 
cur.close() 

这是 xbmc 日志:

03:49:03 T:3628  NOTICE: [(u'101 ABC FAMILY ', u'The Middle -  The Ditch', 
20140520170000L, 20140520173000L), (u'101 ABC FAMILY ', u'The Goonies',  
20140520173000L, 20140520200000L), (u'101 ABC FAMILY ', u'Pirates of the Caribbean: On Stranger Tides',  
20140520200000L, 20140520230000L), (u'101 ABC FAMILY ', u'The 700 Club',  
20140520230000L, 20140521000000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air -  Day Damn One',  
20140521000000L, 20140521003000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air -  Lucky Charm',  
20140521003000L, 20140521010000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air -  The Ethnic Tip',  
20140521010000L, 20140521013000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air -  The Young and the Restless',  
20140521013000L, 20140521020000L), (u'101 ABC FAMILY ', u'Summer Sexy With T25!',  
20140521020000L, 20140521023000L), (u'101 ABC FAMILY ', u'Paid Programming',  
20140521023000L, 20140521030000L) 

我想忽略字符串 (u'uL 所以我想让它看起来像这样:

'101 ABC FAMILY ', 'The Middle -  The Ditch', 20140520170000, 20140520173000,  
'101 ABC FAMILY ', 'The Goonies', 20140520173000, 20140520200000,  
'101 ABC FAMILY ', 'Pirates of the Caribbean: On Stranger Tides', 20140520200000, 20140520230000,  
'101 ABC FAMILY ', 'The 700 Club', 20140520230000, 20140521000000,  
'101 ABC FAMILY ', 'The Fresh Prince of Bel-Air -  Day Damn One', 20140521000000, 20140521003000, 
and so on... 

你能告诉我如何使用 python 2.6 版本将 unicode 对象转换为 utf8 吗?

请您参考如下方法:

  • L 后缀表示长整数。它们实际上与(短)整数相同;真的没有必要转换这些。只有它们的 repr() 输出包含 L直接打印值或将其写入文件,不包括 L 后缀。

  • 可以使用 unicode.encode() 方法将 Unicode 值编码为 UTF-8:

    encoded = unicodestr.encode('utf8') 
    

你的不满在于这里的列表表示;您记录了所有行,Python 容器通过对每个值调用 repr() 来表示它们的内容。这些表示非常适合调试,因为它们的类型很明显。

这取决于您接下来如何处理这些值。在整个代码中使用 Unicode 通常是个好主意,并且只在最后一刻进行编码(写入文件、打印或通过网络发送时)。有很多方法可以为您处理。例如,打印将自动编码为您的终端编解码器。添加到 XML 文件时,大多数 XML 库都会为您处理 Unicode。等等