Clickatellを介してヘブライ語でSMSを送信するにはどうすればよいですか?
それは、ぎこちないものとしてデバイスに到着します。
Clickatellを介してヘブライ語でSMSを送信するにはどうすればよいですか?
それは、ぎこちないものとしてデバイスに到着します。
実用的な例が見つからなかったので、自分で書きました。
これを試して:
UnicodeEncoding unicode = new UnicodeEncoding(true, false);
return string.Concat(unicode.GetBytes(val).Select(c => string.Format("{0:x2}", c)));
ユニコードですか?私の記憶が正しければ、Unicodeを16進表現にエスケープする必要があります。これは彼らのドキュメントにあるはずです。
しかし、これを行ったときに、これが唯一の問題ではなく、多くの電話がUnicode文字の適切な表示をサポートしていないことがわかりました。
また、Unicodeを送信すると、分割される可能性があるため、コストが高くなる可能性があります。
メッセージをUnicodeとしてエンコードします。詳細については、このFAQページを参照してください。
同じ問題が発生しました...Unicodeにエンコードしてから、16進数に変換する必要があります。奇妙なことに、それを機能させるには、最後の値を取得して先頭に追加する必要があります。私は自分のコードの結果を彼らのオンラインツールの出力と比較することによってこれを見つけました。
private string ToUnicode(string val)
{
Encoding utf8 = Encoding.UTF8;
Encoding unicode = Encoding.Unicode;
byte[] utf8Bytes = utf8.GetBytes(val);
byte[] unicodeBytes = Encoding.Convert(utf8, unicode, utf8Bytes);
var result = ByteArrayToString(unicodeBytes);
result = result.Substring(result.Length - 2, 2) + result.Substring(0, result.Length - 2);
return result;
}
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
私はアラビア語に次のロジックを使用しました..ITにはさらにテストが必要です。言語はVB.Netです
If txtArabic.Text.Trim.Length > 0 Then
Dim unicodeString As String = txtArabic.Text
Dim unicode As Encoding = Encoding.Unicode
' Convert the string into a byte array.
Dim unicodeBytes As Byte() = unicode.GetBytes(unicodeString)
Dim sb As String = ToUnicode(txtArabic.Text)
End If
これが変換部分です
Private Function ToUnicode(ByVal strVal As String)
Dim unicode As Encoding = New UnicodeEncoding(True, False)
' Encoding.Unicode
Dim utf8 As Encoding = Encoding.UTF8
Dim utf8Bytes() As Byte = unicode.GetBytes(strVal)
Dim unicodeBytes() As Byte = Encoding.Convert(utf8, unicode, utf8Bytes)
Dim result As String = ByteArrayToString(unicodeBytes)
Return result
End Function
Private Function ByteArrayToString(ByVal ba() As Byte)
Dim hex As StringBuilder = New StringBuilder(ba.Length)
For i As Integer = 0 To ba.Length - 1
If (((i - 2) Mod 4.0) = 0) Then
Else
hex.AppendFormat("{0:x00}", ba(i))
' hex.Append(ba(i))
End If
' hex.Append("-")
Next
Return hex.ToString
End Function