编码unicode正确打印字符串,但使用API​​发送SMS,发送带有问号的短信

时间:2015-07-09 09:34:49

标签: python-2.7 unicode encode

我想用几种语言发送短信。它适用于英语。但如果我想发送法语或西班牙语的短信,我有一个问题。 消息是Unicode。在此之后

message = message.encode('utf-8')

消息是一个字符串并正确打印结果。但是,当我想使用API​​发送消息时,它会发送问号(????????)而不是像à,έ等字符我已经测试过我的手机了。 当我做消息[0]时,它给了我“?”。所以我猜编码('utf-8')不能正常工作。消息包含法语或西班牙语或德语或任何字符。它是一个变量,所以每次都包含不同的语言。 以下是我的代码示例:

to = queue_mobile 
message = queue_message
gateway = AfricasTalkingGateway(username, apikey)

try:
    results = gateway.sendMessage(to, message)
    for recipient in results:
        print 'number=%s;status=%s;messageId=%s;cost=%s' % (recipient['number'],
                                                                        recipient['status'],
                                                                        recipient['messageId'],
                                                                        recipient['cost'])

如果不对消息进行编码,它将从API返回异常(ascii编解码器无法对字符0-6进行编码)。 如果我对消息进行编码('utf-8'),它会发送短信但带有问号。

1 个答案:

答案 0 :(得分:0)

你使用哪种api? 你能展示一些示例代码吗? 您的短信网关支持哪些字符集?

在GSM中,每种语言都有不同的7位字符集。

也许这有助于: https://en.wikipedia.org/wiki/GSM_03.38#GSM_7_bit_default_alphabet_and_extension_table_of_3GPP_TS_23.038_.2F_GSM_03.38