Прежде всего, вы указали два символа , а не из блока арабских форм представления. Это \x0644
и \x0627
из стандартного арабского блока. Тем не менее, просто чтобы убедиться, что я попробовал символ \xFEFB
, который равен «эквивалентным» (не эквивалентным, но вы знаете) символом для لا из блока Presentation Forms, и он отлично работает даже для этого .
Во-вторых, я предполагаю, что вы имеете в виду кодировку Windows-1256 , которая предназначена для устаревшего 8-битного арабского текста.
Итак, я попробовал следующее:
var input = "لا";
var encoding = Encoding.GetEncoding("windows-1256");
var result = encoding.GetBytes(input);
Console.WriteLine(string.Join(", ", result));
Я получаю вывод 225, 199
. Итак, давайте попробуем повернуть его обратно:
var bytes = new byte[] { 225, 199 };
var result2 = encoding.GetString(bytes);
Console.WriteLine(result2);
Достаточно справедливо, Консоль не отображает результат правильно - но окно Watch в отладчике говорит мне, что ответ правильный (он говорит «لا»). Я также могу скопировать вывод из консоли, и он правильный в буфере обмена.
Поэтому кодировка Windows-1256 работает просто отлично, и неясно, в чем ваша проблема.
Моя рекомендация:
Напишите небольшой фрагмент кода, который показывает проблему.
Опубликовать новый вопрос с этим фрагментом кода.
В этом вопросе опишите точно, какой результат вы получите, и какой результат вы ожидали вместо этого.