我正在研究一个使用阿拉伯语的项目,我正在使用pyqt。有一个文本框,我在其中输入阿拉伯语,然后在一个变量中获取该阿拉伯语,并使用python读取它。我试过使用UTF-8,但没有工作。
例如我输入
文本框中的بسم الله الرحمن الرحيم
但是当我读取该文本框的内容时,我得到的变量是:
? ?? ?????
如果我不使用Unicode,那么它会给我错误
ASCII码不能编码字符。
如何获得与输入框相同的阿拉伯语打印变量?
代码为:
item=dir(self.listWidget.selectedItems())
item=self.listWidget.currentItem()
content=self.textEdit.toPlainText()
content = unicode(content, "utf-8")
FROMADDR = ""
LOGIN = FROMADDR
PASSWORD = ""
TOADDRS = str(item.text())
SUBJECT = "Invitation"
msg = ("From: %srnTo: %srnSubject: %srnrn"
% (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
msg += ((u"%s")%content)#"some textrn"
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()
使用适当的电子邮件包类来确保编码正确完成:
from email.mime.text import MIMEText
from email.header import Header
...
LOGIN = ''
PASSWORD = ''
SUBJECT = u'Invitation'
FROMADDR = u''
TOADDRS = unicode(self.listWidget.currentItem().text())
CONTENT = unicode(self.textEdit.toPlainText())
encoding = 'utf-8'
msg = MIMEText(CONTENT, 'plain', encoding)
msg['Subject'] = Header(SUBJECT, encoding)
msg['From'] = Header(FROMADDR, encoding)
msg['To'] = Header(TOADDRS, encoding)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, [TOADDRS], msg.as_string())
server.quit()
这是Windows命令提示符的一个问题。它不能可靠地显示Unicode字符。您需要使用诸如IDLE之类的IDE来显示和验证您的输出。
在这个问题中有更多的信息在windows终端中输出unicode字符,在它们给出的一些链接中