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 關注
- 279 瀏覽
添加回答
舉報
