From 332ec4394a6a11c199747e9c303e8c87455f4347 Mon Sep 17 00:00:00 2001 From: Navidimajd <91372849+Navidimajd@users.noreply.github.com> Date: Tue, 9 Nov 2021 14:56:40 +0330 Subject: [PATCH] Update ConvertTo.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit رشته تبدیل شده در فرمت ویندوز 1256 ایجاد شده ، حال آنکه اگر از cp1252 استفاده کرده باشیم تبدیل cp1252 به یونیکد (با توجه به آرایه مپینگ مربوطه) کار نخواهد کرد و باید حتماً از کانورتور 1256 استفاده کرد. --- IranSystemConvertor/ConvertTo.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/IranSystemConvertor/ConvertTo.cs b/IranSystemConvertor/ConvertTo.cs index 376b31b..5a542f1 100644 --- a/IranSystemConvertor/ConvertTo.cs +++ b/IranSystemConvertor/ConvertTo.cs @@ -231,9 +231,20 @@ public static string UnicodeFrom(TextEncoding textEncoding, string iranSystemEnc } // تبدیل به رشته و ارسال به فراخواننده - byte[] unicodeContent = Encoding.Convert(encoding, Encoding.Unicode, newStringBytes); + Encoding encodingArabic = Encoding.GetEncoding((int)TextEncoding.Arabic1256); - string convertedString = Encoding.Unicode.GetString(unicodeContent).Trim(); + byte[] newStringBytesUnicode = new byte[newStringBytes.Length]; + + newStringBytesUnicode = Encoding.Convert(encodingArabic, Encoding.UTF8, newStringBytes); + + string convertedString = Encoding.UTF8.GetString(newStringBytesUnicode); + convertedString = convertedString + .Replace("ڑ", "ء") + .Replace("ؤ", "ئ") + .Replace("ي", "ی") + .Replace("ك", "ک") + .Replace(char.ConvertFromUtf32(1609), char.ConvertFromUtf32(1740)) + .Replace(char.ConvertFromUtf32(1726), char.ConvertFromUtf32(1607)); return IncludeNumbers(convertedString); }