如何使用clickatell发送希伯来语短信

时间:2009-05-17 10:27:07

标签: web-services sms hebrew clickatell

如何通过Clickatell发送希伯来语短信?

它作为胡言乱语到达设备。

5 个答案:

答案 0 :(得分:3)

我找不到任何有效的例子,我自己写了:

试试这个:

UnicodeEncoding unicode = new UnicodeEncoding(true, false);
return string.Concat(unicode.GetBytes(val).Select(c => string.Format("{0:x2}", c)));

答案 1 :(得分:1)

是unicode吗?如果我没记错的话,他们需要将unicode转义为十六进制表示。这应该在他们的文档中。

然而,当我这样做时,我发现这不是唯一的问题,许多手机不支持正确显示unicode字符。

此外,发送unicode可能会产生更高的成本,因为它可能会被拆分。

答案 2 :(得分:1)

将您的邮件编码为unicode,有关详细信息,请参阅this FAQ page

答案 3 :(得分:1)

遇到同样的问题......你需要编码为unicode然后转换为hex。奇怪的是,您需要获取最后一个值并将其附加到前面才能使其正常工作。我通过将我的代码结果与其在线工具的输出进行比较来发现这一点。

    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();
    }

答案 4 :(得分:0)

我对阿拉伯语使用了以下逻辑.. 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

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