Как отправить смс на иврите с помощью clickatell - PullRequest
1 голос
/ 17 мая 2009

Как можно отправить смс на иврите через Clickatell?

Это прибывает на устройство как бред.

Ответы [ 5 ]

3 голосов
/ 30 июня 2012

Я не смог найти ни одного рабочего примера, поэтому я написал свой собственный:

Попробуйте это:

UnicodeEncoding unicode = new UnicodeEncoding(true, false);
return string.Concat(unicode.GetBytes(val).Select(c => string.Format("{0:x2}", c)));
1 голос
/ 17 мая 2009

Кодируйте ваше сообщение как Unicode, см. эту страницу часто задаваемых вопросов для деталей.

1 голос
/ 25 января 2010

столкнулся с той же проблемой ... вам нужно закодировать в юникод, а затем преобразовать в гекс. Странно то, что вам нужно взять последнее значение и добавить его вперед, чтобы оно заработало. Я выяснил это, сравнив результаты моего кода с результатами их онлайн-инструмента.

    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();
    }
1 голос
/ 17 мая 2009

Это в юникоде? Если я правильно помню, они требуют экранирования юникода в шестнадцатеричное представление. Это должно быть в их документах.

Однако, когда я сделал это, я обнаружил, что это не единственная проблема, многие телефоны не поддерживают правильное отображение символов Юникода.

Кроме того, отправка Unicode может повлечь за собой более высокую стоимость, так как он может быть разделен.

0 голосов
/ 14 сентября 2013

Я использовал следующую логику для арабского языка. Это требует дополнительного тестирования. Язык VB.Net </p> <pre><code> 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

Вот часть конверсии </p> <p>Private Function ToUnicode(ByVal strVal As String)</p> <pre><code> 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

...