Превращение любого текста с любой кодировкой в ​​байтовый массив C#

Здравствуйте, мои друзья! У меня есть алгоритм, который преобразует строку в байтовый массив. Английский текст работает нормально, но в других языках, как на арабском, я не знаю, потому что это Unicode, но я хочу создать алгоритм, который может конвертировать любой тип текста.

вот мой код:

 public static byte[] StringToByteArray(string x)
    {
        byte[] bytes = new byte[x.Length * sizeof(char)];
        Buffer.BlockCopy(x.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
        }

поэтому, когда я передаю текст на английском, длина байтов нормальная, но когда я передаю текст на других языках, это нормально *2, потому что есть нули

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

Пример: арабский текст сгенерирует байтовый массив, как 40 0 4 0 10 0 214 0 7 0, поэтому у меня есть нули для каждого нечетного индекса, а длина байтового массива будет в 2 раза больше

PS: я пробовал много алгоритмов в Интернете и из других сообщений, но ни один из них не решает проблему

1 ответ

Вы можете просто использовать System.Text.Encoding чтобы получить байты из текста Unicode, а также преобразовать обратно в исходную строку Unicode следующим образом:

string source = "Your arabic text goes here...";
var byes = System.Text.Encoding.UTF8.GetBytes(source);
string dest = System.Text.Encoding.UTF8.GetString(byes);
Другие вопросы по тегам