1 回答
TA贡献1862条经验 获得超6个赞
只需删除所有对字符串进行编码的尝试即可。.NET 字符串已经是 Unicode,特别是 UTF16。PublishAsync需要 .NET 字符串,而不是 UTF8 字节。
至于为什么会出现这个错误,是因为代码使用本地计算机的代码页将字符串转换为字节,然后尝试将这些字节当作UTF8读取,但事实并非如此——使用UTF8作为系统代码页是一个测试版功能在 Windows 10 上,这会破坏很多应用程序。
SMS 的换行符是\n。除非您在 Linux 上使用 .NET Core,否则Environment.NewLine返回。StringBuilder.AppendLine使用所以你不能使用它。\r\nEnvironment.NewLine
除了 String.Join 之外,您不需要任何其他东西即可将多行组合成一条消息:
var message=String.Join("\n",lines);
如果您需要使用 StringBuilder,请使用在末尾AppendFormat附加一个带有字符的行,例如:\n
builder.AppendFormat("{0}\n",line);
更新
我能够使用以下代码发送包含换行符的短信:
var region = Amazon.RegionEndpoint.EUWest1;
var snsClient = new AmazonSimpleNotificationServiceClient(region);
var sb = new StringBuilder()
.Append("Line1.\n")
.Append("Line2.\n")
.Append("Line4\n");
var message = sb.ToString();
// Create request
var publishRequest = new PublishRequest
{
PhoneNumber = phone,
Message = message,
};
// Send SMS
var response = await snsClient.PublishAsync(publishRequest);
我收到的消息包含:
Line1.
Line2.
Line4.
我决定花点时间,将最后一行更改为:
.Append("Line4ΑΒΓ£§¶\n");
我也毫无问题地收到了这条短信
- 1 回答
- 0 关注
- 193 浏览
添加回答
举报