Превращение любого текста с любой кодировкой в байтовый массив 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);