可能的原因是AWS SNS(SMS)默认会将一些字符转义成Unicode字符。使用urlencode方法可将该字符编码为UTF-8,并将编码后的字符串发送到SNS。以下是一个示例代码:
import urllib.parse
import boto3
sns = boto3.client('sns')
phone_number = '+1234567890'
message = 'This is a message with a special character !'
# Encode message with urlencode method
message_urlencoded = urllib.parse.quote(message)
response = sns.publish(
PhoneNumber=phone_number,
Message=message_urlencoded
)
print(response)
在上面的代码中,'!'这个特殊字符会被urlencode方法编码为'%21',从而解决了该问题。