我正在使用批量短信服务,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
感谢您的帮助
答案 0 :(得分:2)
假设您正在使用BulkSMS.com的older EAPI,对于Unicode短信,您必须将dca=16bit
添加到网址,并以十六进制对您的邮件正文进行编码 - 请参阅如何发送Unicode(16位)短信? in the FAQ。
使用the newer 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