0

我正在使用群发短信服务https://www.bulksms.com

由于编码,我无法发送阿拉伯语信息。

message = بريستيج
vals = {
      'username': gateway.login,
      'password': gateway.password,
      'message': message,
      'msisdn': mobile,
}
urllib.urlencode(vals)
req = urllib2.Request(url, params)
f = urllib2.urlopen(req)

UnicodeEncodeError:“ascii”编解码器无法对位置 0-6 中的字符进行编码:序数不在范围内(128)

我解决了这个问题:message.encode('utf8')

但是当消息发送时,将 char 替换为??? ?????? char

感谢帮助

4

1 回答 1

2

假设您使用的是 BulkSMS.com 的旧版 EAPI,对于 Unicode SMS,您必须将其添加dca=16bit到 URL,并以十六进制编码您的消息正文 - 请参阅如何发送 Unicode(16 位)SMS? 在常见问题解答中

使用较新的 JSON API会容易得多,它将大致完成您最初的预期,而无需额外的努力:

# coding=utf-8
import json
import urllib
import urllib2
import base64

data = {
      'to': '+1234567890',
      'body': 'بريستيج'
}

encodedData = json.dumps(data, encoding="utf-8", ensure_ascii=False)
request = urllib2.Request('https://api.bulksms.com/v1/messages?auto-unicode=true')
request.add_header('Content-Type', 'application/json;charset=utf-8')
base64string = base64.b64encode('%s:%s' % ('your_username', 'your_password'))
request.add_header("Authorization", "Basic %s" % base64string)
f = urllib2.urlopen(request, encodedData)
response = f.read()
f.close()
print response
于 2017-10-24T13:11:41.290 回答