موارد خیلی جالبی بود
فیلم هاش رو میتونید از آدرسهای زیر دریافت کنید
لینکهای یوتیوب رو مستقیم کردم. تقریبا یک هفته ای لینکها اعتبار دارن از الان
دانلود زیرنویس تنها 4 عدد از ویدیوها زیرنویس داشتند
public static string UnicodeFrom(TextEncoding textEncoding, string iranSystemEncodedString) { // وهله سازی از انکودینگ صحیح برای تبدیل رشته ایران سیستم به بایت Encoding encoding = Encoding.GetEncoding((int)textEncoding); // حذف فاصلههای موجود در رشته iranSystemEncodedString = iranSystemEncodedString.Replace(" ", ""); if (iranSystemEncodedString.Length <= 0) return ""; // تبدیل رشته به بایت byte[] stringBytes = encoding.GetBytes(iranSystemEncodedString.Trim()); // تغییر ترتیب بایت هااز آخر به اول در صورتی که رشته تماماً عدد نباشد if (!IsNumber(iranSystemEncodedString)) { stringBytes = stringBytes.Reverse().ToArray(); } // آرایه ای که بایتهای معادل را در آن قرار میدهیم // مجموع تعداد بایتهای رشته + بایتهای اضافی محاسبه شده byte[] newStringBytes = new byte[stringBytes.Length + CountCharactersRequireTwoBytes(stringBytes)]; int index = 0; // بررسی هر بایت و پیدا کردن بایت (های) معادل آن for (int i = 0; i < stringBytes.Length; ++i) { byte charByte = stringBytes[i]; // اگر جز 128 بایت اول باشد که نیازی به تبدیل ندارد چون کد اسکی است if (charByte < 128) { newStringBytes[index] = charByte; } else { // اگر جز حروف یا اعداد بود معادلش رو قرار میدیم if (CharactersMapper.ContainsKey(charByte)) { newStringBytes[index] = CharactersMapper[charByte]; } } // اگر کاراکتر ایران سیستم "لا" بود چون کاراکتر متناظرش در عربی 1256 "ل" است و باید یک "ا" هم بعدش اضافه کنیم if (charByte == 242) { newStringBytes[++index] = 199; } // اگر کاراکتر یکی از انواعی بود که بعدشان باید یک فاصله باشد // و در عین حال آخرین کاراکتر رشته نبود if (charactersWithSpaceAfter.Contains(charByte) && Array.IndexOf(stringBytes, charByte) != stringBytes.Length - 1) { // یک فاصله بعد ان اضافه میکنیم newStringBytes[++index] = 32; } index += 1; } // تبدیل به رشته و ارسال به فراخواننده byte[] unicodeContent = Encoding.Convert(encoding, Encoding.Unicode, newStringBytes); string result = Encoding.Unicode.GetString(unicodeContent).Trim(); result = result.Replace("ڑ", "ء").Replace("ؤ", "ئ"); //در صورتی که عدد داخل رشته نیست نیاز به ادامه کار نمیباشد if (!Regex.IsMatch(result, @"\d")) return result; bool isLastDigit = false; string tempForDigits = ""; string str=""; for (int i = 0; i < result.Length; i++) { if (Regex.IsMatch(result[i].ToString(), @"\d") || (i+1<result.Length && Regex.IsMatch(result[i].ToString() + result[i+1].ToString(), @"/\d"))) { isLastDigit = true; tempForDigits += result[i]; } else { if (isLastDigit && tempForDigits.Length > 0) { str += new string(tempForDigits.Reverse().ToArray()); isLastDigit = false; tempForDigits = ""; } str += result[i]; } if (!String.IsNullOrWhiteSpace(tempForDigits) && i == result.Length - 1) { str += new string(tempForDigits.Reverse().ToArray()); } } return str; }