1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
只需刪除所有對(duì)字符串進(jìn)行編碼的嘗試即可。.NET 字符串已經(jīng)是 Unicode,特別是 UTF16。PublishAsync需要 .NET 字符串,而不是 UTF8 字節(jié)。
至于為什么會(huì)出現(xiàn)這個(gè)錯(cuò)誤,是因?yàn)榇a使用本地計(jì)算機(jī)的代碼頁將字符串轉(zhuǎn)換為字節(jié),然后嘗試將這些字節(jié)當(dāng)作UTF8讀取,但事實(shí)并非如此——使用UTF8作為系統(tǒng)代碼頁是一個(gè)測(cè)試版功能在 Windows 10 上,這會(huì)破壞很多應(yīng)用程序。
SMS 的換行符是\n。除非您在 Linux 上使用 .NET Core,否則Environment.NewLine返回。StringBuilder.AppendLine使用所以你不能使用它。\r\nEnvironment.NewLine
除了 String.Join 之外,您不需要任何其他東西即可將多行組合成一條消息:
var message=String.Join("\n",lines);
如果您需要使用 StringBuilder,請(qǐng)使用在末尾AppendFormat附加一個(gè)帶有字符的行,例如:\n
builder.AppendFormat("{0}\n",line);
更新
我能夠使用以下代碼發(fā)送包含換行符的短信:
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.
我決定花點(diǎn)時(shí)間,將最后一行更改為:
.Append("Line4ΑΒ?!辍?\n");
我也毫無問題地收到了這條短信
- 1 回答
- 0 關(guān)注
- 238 瀏覽
添加回答
舉報(bào)