格式化非英语字符串

时间:2017-08-20 18:23:47

标签: python python-2.7

我编写了一个需要格式化包含希伯来字母的字符串的函数,该脚本在使用英文字母时运行良好。但是当使用希伯来语时,它会给我以下错误:

错误是:

Error:  'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

功能代码是(定义行下的代码是缩进的,而不是在代码块中看到的):

def postWP(gameTitle,gameCode):
    print "PostWP activated, Title: %s" % gameTitle
    mail = smtplib.SMTP('smtp.gmail.com',587)
    mail.ehlo()
    mail.starttls()
    mail.login('email@gmail.com','emailPassword')
    message = 'Subject: {}\n\n{}'.format(gameTitle, gameCode)
    print "Sending mail..."
    mail.sendmail('email@gmail.com','destination@mail.com',message)
    mail.close()

基本上,问题发生在'Subject: {}\n\n{}'.format(gameTitle, gameCode)'

我想知道如何解决这个问题。在此之前,感谢所有想要帮助的人! 最诚挚的问候,祝你有个美好的一天!

1 个答案:

答案 0 :(得分:0)

def postWP(gameTitle,gameCode):
    # additional parameter checking
    if not isinstance(gameTitle, basestring):
        print "gameTitle type error"
        return
    if not isinstance(gameCode, basestring):
        print "gameCode type error"
        return
    if isinstance(gameTitle, unicode):
        gameTitle = gameTitle.encode('utf8')
    if isinstance(gameCode, unicode):
        gameCode = gameCode.encode('utf8')

    # the following remains the same
    print "PostWP activated, Title: %s" % gameTitle
    mail = smtplib.SMTP('smtp.gmail.com',587)
    mail.ehlo()
    mail.starttls()
    mail.login('email@gmail.com','emailPassword')
    message = 'Subject: {}\n\n{}'.format(gameTitle, gameCode)
    print "Sending mail..."
    mail.sendmail('email@gmail.com','destination@mail.com',message)
    mail.close()