AWS SNS发送含西班牙语重音字符SMS乱码问题求助
解决方案:AWS SNS SMS西班牙语特殊字符乱码问题
核心原因:AWS SNS默认使用GSM 03.38编码发送SMS,该编码不支持西班牙语的重音字符(如ó、í),导致字符转义失败出现乱码。
解决步骤:发送消息时明确指定使用UTF-16编码,同时设置短信类型(Transactional/Promotional):
AWS CLI示例
aws sns publish \ --phone-number "+你的目标手机号" \ --message "Tu código de verificación es: 1234" \ --message-attributes '{"AWS.SNS.SMS.SMSType": {"DataType": "String", "StringValue": "Transactional"}, "AWS.SNS.SMS.Encoding": {"DataType": "String", "StringValue": "UTF-16"}}'
Python Boto3示例
import boto3 sns = boto3.client('sns') sns.publish( PhoneNumber="+你的目标手机号", Message="Tu código de verificación es: 1234", MessageAttributes={ 'AWS.SNS.SMS.SMSType': { 'DataType': 'String', 'StringValue': 'Transactional' }, 'AWS.SNS.SMS.Encoding': { 'DataType': 'String', 'StringValue': 'UTF-16' } } )
- 注意事项:
- 不要提前对消息做UTF-8编码,直接发送原始字符串即可,SNS会按指定编码处理。
- UTF-16编码会使单条短信的字符容量减半(从160个GSM字符变为70个UTF-16字符),超长消息会自动拆分多条发送,费用会按多条计算。
内容的提问来源于stack exchange,提问作者beitomartinez
相关产品推荐
相关产品推荐

