Как конвертировать Unicode в UTF-8 кодировку в C # - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу преобразовать строку Unicode в строку UTF8.Я хочу использовать эту строку UTF8 в SMS API для отправки юникодных SMS.Я хочу преобразование как этот инструмент https://cafewebmaster.com/online_tools/utf8_encode

например.У меня есть строка Unicode "ic फ़्रेंड्स", и она должна быть преобразована в "à intoà ¥ à ²à ¥ à ¥ à ¥ ¥ ¥¤ ° ¥ ¥ à à¤¡à ¥ स"

Iпробовал это, но не получил ожидаемый вывод

    private string UnicodeToUTF8(string strFrom)
        {
           byte[] bytes = Encoding.Default.GetBytes(strFrom);

           return Encoding.UTF8.GetString(bytes);

        }

и вызывал функцию, подобную этой

string myUTF8String = UnicodeToUTF8("हैलो फ़्रेंड्स");

1 Ответ

0 голосов
/ 27 декабря 2018

Я не думаю, что это возможно, чтобы ответить конкретно, не зная больше о SMS API, который вы хотите использовать.Тип string в C # - UTF-16.Если вам нужна другая кодировка, она будет указана как byte[] (потому что string - это UTF-16, всегда).

Вы могли бы"преобразовать" это в строку, выполнив что-то вроде этого:

static string UnicodeToUTF8(string from) {
    var bytes = Encoding.UTF8.GetBytes(from);
    return new string(bytes.Select(b => (char)b).ToArray());
}

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

Смысл string в том, что нам не нужно беспокоиться о лежащем в основе кодировании, но эта операция приведения является своего рода гигантским хаком и не дает никаких гарантий, что string представляет собой правильно сформированную строкубольше.

Если что-то ожидает кодировку UTF-8, оно должно принять byte[], а не string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...