1

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

它以乱码形式出现在设备上。

4

5 回答 5

3

我找不到任何可行的例子,所以我自己写了:

尝试这个:

UnicodeEncoding unicode = new UnicodeEncoding(true, false);
return string.Concat(unicode.GetBytes(val).Select(c => string.Format("{0:x2}", c)));
于 2012-06-30T16:18:45.120 回答
1

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

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

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

于 2009-05-17T10:41:39.287 回答
1

将您的消息编码为 un​​icode,有关详细信息,请参阅此常见问题解答页面

于 2009-05-17T10:46:38.260 回答
1

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

    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();
    }
于 2010-01-25T08:03:38.943 回答
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

这是转换部分

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

于 2013-09-14T06:43:03.857 回答