Python - 阿拉伯语转换不合适

时间:2011-11-26 14:19:06

标签: python email unicode pyqt arabic

我正在开发一个使用阿拉伯语的项目,我正在使用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: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
    % (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
    msg += ((u"%s")%content)#"some text\r\n" 
    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()

2 个答案:

答案 0 :(得分:1)

使用适当的email package类来确保编码正确完成:

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()

答案 1 :(得分:1)

这是Windows命令提示符的问题。它无法可靠地显示Unicode字符。您需要使用IDLE等IDE来显示和验证输出。

此问题Outputting unicode characters in windows terminal以及他们提供的一些链接中有更多信息。