Python2.6和unicode

Python2.6和unicode,python,browser,unicode,encoding,pyqt,Python,Browser,Unicode,Encoding,Pyqt,因此,我正在为我的客户机开发一种web浏览器类型的应用程序,我刚刚实现了书签功能,但它并没有像预期的那样工作。当用户单击“书签页面”时,会弹出一个小表单,该表单获取网页的标题并将其置于行编辑中。问题是,如果网站标题中有一些外来或不寻常的符号,那么Python就会抛出一个错误,说明它无法对字符串进行编码。我如何让python处理所有可能的字符串,不管它是否有象形文字或其他奇怪的符号 用于GUI和嵌入式浏览器的库:PyQT您使用什么来解析网站?我推荐你。它将尝试确定网页的编码并返回unicode。编

因此,我正在为我的客户机开发一种web浏览器类型的应用程序,我刚刚实现了书签功能,但它并没有像预期的那样工作。当用户单击“书签页面”时,会弹出一个小表单,该表单获取网页的标题并将其置于行编辑中。问题是,如果网站标题中有一些外来或不寻常的符号,那么Python就会抛出一个错误,说明它无法对字符串进行编码。我如何让python处理所有可能的字符串,不管它是否有象形文字或其他奇怪的符号


用于GUI和嵌入式浏览器的库:PyQT

您使用什么来解析网站?我推荐你。它将尝试确定网页的编码并返回unicode。编辑:还可以查看“Beautiful Soup为您提供Unicode,Dammit”部分

如果您使用
QWebView.title
获取当前网页的标题,那么它将返回
QString
或python Unicode字符串。获得哪一个取决于使用的pyqtapi版本。对于版本1(Python2的默认版本),它将是一个
QString
;对于版本2(Python3的默认版本),它将是一个python unicode字符串。无论是哪种类型,为了在行编辑中正确显示,只需直接设置:

lineEdit.setText(webview.title())
由于您似乎正在使用Python2,我将假定
webview.title()
正在返回
QString
。如果要将其转换为python unicode字符串(例如,为了与sqlite一起使用),则可以执行以下操作:

title = unicode(webview.title())
请注意,不应将编码(如“utf-8”)作为第二个参数传递给
unicode
,因为这用于将字节字符串解码为unicode字符串

如果确实需要从
QString
获取“utf-8”编码字节字符串,则可以执行以下操作之一:

data = unicode(webview.title()).encode('utf-8')
或:


如果没有代码,很难猜测,特别是因为您的标题已经表明您知道解决方案使用的是unicode…我尝试了unicode(web.title(),“utf-8”),但随后出现了一个错误,我无法在sqlite中存储字节码。我正在使用PyQT中的QWebView显示网站并从中获取所需数据。好的,恐怕我再也帮不上忙了,因为我对PyQT没有任何经验。如果您无法找到使用QWebView的方法,您可以将此作为最后手段单独获取页面,但是@ekhumoro的解决方案在这里似乎更合适
data = webview.title().toUtf8().data()