为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 sns 短信中创建正确的换行符?

如何在 sns 短信中创建正确的换行符?

C#
慕标5832272 2023-08-20 09:56:06
我正在使用AWS .NET-SDK通过AWS SNS 服务发送 SMS 消息。到目前为止,一切都很好; 但是当我使用换行符时,我会?在短信中的换行符开始之前看到此时的字符。在该字符之后,将按预期添加换行符。没有这个字符是否有可能换行??我也尝试过以下操作:StringBuilder.AppendLine,"\\n","\\r\\n",@"\n",@"\r\n",Environment.NewLine并将字符串编码为UTF-8。不起作用的示例:// Create message stringvar sb = new StringBuilder();sb.AppendLine("Line1.");sb.Append("Line2.\\n");sb.AppendLine(Environment.NewLine);sb.Append(@"Line4\n");// Encode into UTF-8var utf8 = UTF8Encoding.UTF8;var stringBytes = Encoding.Default.GetBytes(sb.ToString());var decodedString = utf8.GetString(stringBytes);var message = decodedString;// Create requestvar publishRequest = new PublishRequest{    PhoneNumber = "+491234567890",    Message = message,    Subject = "subject",    MessageAttributes = "Promotional"};// Send SMSvar response = await snsClient.PublishAsync("topic", message, "subject");
查看完整描述

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");

我也毫无问题地收到了这条短信


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 193 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信