我编写了一个需要格式化包含希伯来字母的字符串的函数,该脚本在使用英文字母时运行良好。但是当使用希伯来语时,它会给我以下错误:
错误是:
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)'
。
我想知道如何解决这个问题。在此之前,感谢所有想要帮助的人! 最诚挚的问候,祝你有个美好的一天!
答案 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()