• #
    ‫۱۱ سال و ۱۲ ماه قبل، پنجشنبه ۲۷ مهر ۱۳۹۱، ساعت ۱۳:۰۹
    ممنون؛ بسیار کاربردی بود.برنامه‌های تحت فاکس‌پرو بسیاری موجود هست که از این فارسی‌ساز استفاده می‌کند.
  • #
    ‫۱۱ سال و ۸ ماه قبل، شنبه ۱۴ بهمن ۱۳۹۱، ساعت ۱۶:۲۵
    خیلی عالی بود. فقط من به کلاسی برای تبدیل Unicode به ایران سیستم هم نیاز دارم.
    اگه این کد رو هم تو سایتتون بذارید ، خیلی خیلی ممنون میشم 
    • #
      ‫۱۱ سال و ۸ ماه قبل، شنبه ۱۴ بهمن ۱۳۹۱، ساعت ۱۷:۴۹
      یک زمانی بود دوره VB6 و ویندوزهای قبل از 2000 که پشتیبانی محدودی از یونیکد داشتند (فریم ورک‌های برنامه نویسی با درک پایین از یونیکد را هم اضافه کنید به این لیست). این روش encoding به آن دوره بر می‌گردد. نتیجه اینکه مراجعه کنید به انجمن‌های VB6 در اینباره مطلب و سورس زیاد هست.
  • #
    ‫۱۱ سال و ۳ ماه قبل، چهارشنبه ۲۶ تیر ۱۳۹۲، ساعت ۱۸:۵۷
    یک نکته تکمیلی
    کتابخانه فوق برای دریافت متن عربی 1256 تنظیم شده اما اگر با فایل‌های قدیمی فاکس پرو کار کنید استاندارد آن CP1252 ASCII است.
    به همین جهت برای خواندن این نوع فایل‌ها در سی شارپ
    الف) درایور فاکس پرو را نصب کنید
    ب) از رشته اتصالی ذیل برای ساخت OleDbConnection استفاده کنید
     var connectionString = "Provider=VFPOLEDB.1;Data Source=D:\path\rep.dbf;Password=;Collating Sequence=MACHINE";
    ج) اندکی نیاز است کتابخانه فوق تغییر کند.
    ابتدای متد Unicode آن می‌شود:
     // the text is standard CP1252 ASCII
    Encoding cp1252 = Encoding.GetEncoding(1252);
    
    // تبدیل رشته به بایت
    byte[] stringBytes = cp1252.GetBytes(iranSystemEncodedString.Trim());
    و انتهای این متد (بجای دو سطر نهایی فعلی آن)
     return Encoding.GetEncoding(1256).GetString(newStringBytes);
    یک نمونه فایل قدیمی برای آزمایش select onvan from REP.DBF
      REP.DBF
      • #
        ‫۱۰ سال و ۸ ماه قبل، پنجشنبه ۲۴ بهمن ۱۳۹۲، ساعت ۲۱:۱۴
        خروجی درایور VFPOLEDB.1 عربی 1256 نیست؛ 1252 است (مجددا الان تست کردم).
        • #
          ‫۱۰ سال و ۸ ماه قبل، جمعه ۲۵ بهمن ۱۳۹۲، ساعت ۰۲:۳۰
          درسته حق با شماست . اشتباه من اینجا بود که فیلد  onvan رو مستقیما خودم کپی می‌کردم توی تابع . اگر از دیتابیس خونده بشه CP1252 هستش . ( باید در خوندن توجه بیشتری می‌کردم )
  • #
    ‫۹ سال و ۹ ماه قبل، چهارشنبه ۱۰ دی ۱۳۹۳، ساعت ۰۳:۵۵
    درصورتی که فیلدی شامل حروف و عدد باشه اعداد برعکس میخوره

    مثلا خروجی باید:
    "سعید سالاری 09122222120" باشه
    به این شکله "سعید سالاری 02122222190"  که اشتباهه.

    مشکل  به نظر از اینجاست:
     stringBytes = stringBytes.Reverse().ToArray();

     
    • #
      ‫۹ سال و ۹ ماه قبل، سه‌شنبه ۱۶ دی ۱۳۹۳، ساعت ۰۳:۱۴
      من متد UnicodeFrom را به شکل زیر تغییر دادم الان درست کار میکنه: 
         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;
              }
  • #
    ‫۹ سال و ۲ ماه قبل، یکشنبه ۲۱ تیر ۱۳۹۴، ساعت ۱۵:۲۱

    باسلام؛ من در رابطه با تبدیل کدهای ایران سیستم با یک مشکل متفاوت مواجه شدم که گویا خیلی خاص است چون ندیدم کسی در این رابطه سوالی مطرح کند و آن اینکه من فایل DBF را در فرم خود باز میکنم اما کدهای قبل از تبدیل به ویندوز که مشاهده میشه هیچ شباهتی به کدهای معادل در ایران سیستم ندارد و این تحت شرایطی است که من از فارسی بودن و تحت کدپیچ ایران سیستم بودن حروف آینDBF مطمئن هستم چون با برنامه‌های فارسی ساز اماده موجود در اینترنت کاملا درست فارسی میشود .
    بعضی از دوستان راهنمایی کردن که اشکال در کانکشن و مشخص نکردن codepage=850 هست ولی باز هم نتیجه نگرفتم. کانکشنی که من استفاده میکنم :

     @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=850;SourceType=DBF;Data Source=" + FileAdress + ";Extended Properties=\"dBase III\";Locale Identifier=\"850\";"
    وقتی این فایل را با برنامه دیگری باز کنم حروف را درست نشان میده ولی وقتی با برنامه خودم باز میکنم اشتباه نشان میده که عکس‌های ان را در زیر گذاشتم. نمونه کدهای غیر استاندارد و استاندارد همان DBF



    در رابطه با مشکل حروف، dbf مورد نظر را نیز به پیوست ارسال میکنم: JVJ100.DBF

    • #
      ‫۹ سال و ۲ ماه قبل، یکشنبه ۲۱ تیر ۱۳۹۴، ساعت ۱۶:۱۹
      «نکته‌ی تکمیلی» که در نظرات فوق عنوان شد، با بانک اطلاعاتی شما هم کار می‌کند:


      با این کدها:
      // from http://www.microsoft.com/en-us/download/details.aspx?id=14839
      var connectionString = "Provider=VFPOLEDB.1;Data Source=" +
                             @"D:\path\JVJ100.DBF" +
                              ";Password=;Collating Sequence=MACHINE";
      using (var dbConnection = new OleDbConnection(connectionString))
      {
          using (var dataAdapter = new OleDbDataAdapter("select FAMILY from JVJ100.DBF", dbConnection))
          {
              using (var dataset = new DataSet())
              {
                  dataAdapter.Fill(dataset, "table1");
       
                  foreach (DataRow dataRow in dataset.Tables[0].Rows)
                  {
                      var familyIranSystem = dataRow[0] as string;
                      var familyIranUnicode = ConvertTo.Unicode(familyIranSystem, 1256);
                      if (!string.IsNullOrWhiteSpace(familyIranUnicode))
                      {
                      }
                  }
              }
          }
      }


      دو نکته در اینجا مهم است:
      الف) استفاده از درایور فاکس پرو
      ب) code page استفاده شده 1256 است که باید در IranSystemConvertor تنظیم شود.
  • #
    ‫۹ سال و ۲ ماه قبل، پنجشنبه ۱۵ مرداد ۱۳۹۴، ساعت ۱۳:۳۷
    سلام
    من از این کد استفاده کردم اما اطلاعات درست تبدیل نمیشه، مثلا به جای مهندسی کامپیوتر (نرم افزار) به این صورت تبدیل شده ??ندس کا?پ??تر)نرم ?فز?ر( 
    من آخرین فایل‌ها رو از github دانلود کردم. 
    • #
      ‫۹ سال و ۲ ماه قبل، پنجشنبه ۱۵ مرداد ۱۳۹۴، ساعت ۱۴:۵۰
      اگر از درایور فاکس پرو استفاده کردید،  این مورد فقط به code page فایل دیتابیس بستگی دارد. حالت‌های 1252 و 1256 را بررسی کنید (پارامتر اول متد ConvertTo.UnicodeFrom).
      • #
        ‫۹ سال و ۲ ماه قبل، پنجشنبه ۱۵ مرداد ۱۳۹۴، ساعت ۱۷:۱۱
        تغییرات گفته شده در یک نکته تکمیلی را انجام دادم و مشکل برطرف شد ممنون.
        من می‌خواهم در برنامه حقوق و دستمزد یک بخش تولید خروجی بیمه بنویسم، در اینترنت که جستجو کردم این سایت را دیدم. اطلاعات را چطور در فایل .dbf بنویسم؟ بعد از هر کلمه باید \t بنویسم؟ در سطر اول عنوان ستون‌ها و در سطر دوم رکوردها اضافه شوند؟ ممنون میشم اگر راهنماییم کنید.
          • #
            ‫۹ سال و ۲ ماه قبل، شنبه ۱۷ مرداد ۱۳۹۴، ساعت ۱۵:۳۳
            من در ثبت اطلاعات در فایل dbf یک مشکل دارم. وقتی فیلد جدول از نوع nvarchar هست چطور باید دیتا رو به کوئری بفرستم؟ تو اینترنت جستجو کردم و چند راه مختلف رو امتحان کردم اما همش syntax error میده. 
            این کد رو نوشتم:
            string dbfDirectory = Server.MapPath("~/Content/") + "myDBF.dbf";
                        
                        string connectionString = "Provider=VFPOLEDB.1;Data Source=" + dbfDirectory + ";Password=;Collating Sequence=MACHINE"; 
                        using (OleDbConnection connection = new OleDbConnection(connectionString))
                        {
                            connection.Open();
                            string CreateTableK = "Create Table myDBF (dsw_id1 int, dsw_fname v(250), dsw_lname v(250) )";
                            OleDbCommand cmdCreateTable = new OleDbCommand(CreateTableK, connection);
                            cmdCreateTable.ExecuteNonQuery();
            
                            OleDbCommand cmd2 = new OleDbCommand("Insert Into myDBF Values (1, @param1, @param2)", connection);
                            cmd2.Parameters.AddWithValue("@param1", "شهرزاد");
                            cmd2.Parameters.AddWithValue("@param2", "جواهری");
                            OleDbCommand cmd3 = new OleDbCommand("Insert Into myDBF Values (2, 'ma', 'bi')", connection);
                            
                            cmd2.ExecuteNonQuery();
                            cmd3.ExecuteNonQuery();
            
                            connection.Close();
                        }
            روی خط cmd2.ExecuteNonQuery();  خطای syntax error میده.
            باید عبارت فارسی رو به ایران سیستم تبدیل و بعد در فایل اضافه کنم. برای این تبدیل هم این لینک  رو دیدم، اما بعد از تبدیل یک رشته از بایت میده، چطور باید در فایل نوشته بشه؟
            • #
              ‫۹ سال و ۱ ماه قبل، یکشنبه ۱۸ مرداد ۱۳۹۴، ساعت ۰۵:۳۶
              برای ایجاد بانک اطلاعاتی جدید فاکس پرو نیاز است فقط مسیر پوشه را داد و نه مسیر فایل را. نام جدول مشخص شده، تبدیل به نام فایل تولیدی می‌شود:
              //ایجاد بانک اطلاعاتی خالی
              var dir = @"D:\Prog\"; // این مسیر پوشه است و نه مسیر فایل
              using (OleDbConnection connection = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + dir))
              {
                  using (var command = new OleDbCommand())
                  {
                      command.Connection = connection;
                      command.Connection.Open();
                      command.CommandText = "Create Table myDBF (dsw_id1 int, dsw_fname v(250), dsw_lname v(250) )";
                      command.CommandType = CommandType.Text;
                      command.ExecuteNonQuery();
                  }
              }
              برای ثبت اطلاعات پارامتری در بانک اطلاعاتی فاکس پرو فقط و فقط پارامترهایی با نام ? مجاز هستند (و نه هیچ حالت دیگری):
              //ثبت اطلاعات در بانک ایجاد شده
              var dbPath = Path.Combine(dir, "myDBF.dbf");
              using (OleDbConnection connection = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + dbPath))
              {
                  using (var command = new OleDbCommand())
                  {
                      command.Connection = connection;
                      command.Connection.Open();
                      command.CommandText = "Insert Into myDBF Values (1, ?, ?)";
                      command.Parameters.AddWithValue("?", "B"); // فقط علامت سؤال در اینجا کار می‌کند و نه هیچ چیز دیگری
                      command.Parameters.AddWithValue("?", "A");
                      command.CommandType = CommandType.Text;
                      command.ExecuteNonQuery();
                  }
              }
              - متد اصلی آن مطلب «public List» است که این لیست را باید تبدیل به رشته کنید.
              • #
                ‫۹ سال و ۱ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۰۱:۱۳
                در متد get_Unicode_To_IranSystem  نوع لیست اشتباه است، من به جای آن List<byte> نوشتم. این لیست رو چطور میشه به string تبدیل کرد؟
                • #
                  ‫۹ سال و ۱ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۰۱:۳۸
                  نکته‌ی اصلی و کلی به این شکل هست:
                  string ascii =  Encoding.ASCII.GetString(list.ToArray());
                  سایر حالت‌های Encoding.UTF8 و موارد ممکن دیگر را هم تست کنید تا به جواب برسید.
                  • #
                    ‫۹ سال و ۱ ماه قبل، دوشنبه ۱۹ مرداد ۱۳۹۴، ساعت ۱۴:۴۴
                    با حالت Encoding .Default درست تبدیل میشه اما در خواندن فایل رشته برعکس میشد. شمارنده حلقه را در متد  get_Unicode_To_IranSystem  تغییر دادم که رشته برعکس ساخته شود.
                     List<byte> IS_Result = new List<byte>();
                                //for (int i = 0; i < limit; i++)
                                for (int i = limit - 1; i >= 0; i--)
                                {
                    
                                    if (is_Lattin_Letter(b22[i]))
                                    {
                                        cur = get_Lattin_Letter(b22[i]);
                    
                                        IS_Result.Add(cur);
                    
                    
                                        pre = cur;
                                    }
                                    else if (i != 0 && i != b22.Length - 1)
                                    {
                                        cur = get_Unicode_To_IranSystem_Char(b22[i - 1], b22[i], b22[i + 1]);
                    
                                        if (cur == 145) // برای بررسی استثنای لا
                                        {
                                            if (pre == 243)
                                            {
                                                IS_Result.RemoveAt(IS_Result.Count - 1);
                                                IS_Result.Add(242);
                                            }
                                            else
                                            {
                                                IS_Result.Add(cur);
                                            }
                                        }
                                        else
                                        {
                                            IS_Result.Add(cur);
                                        }
                    
                    
                    
                                        pre = cur;
                                    }
                    
                                }

    • #
      ‫۹ سال و ۲ ماه قبل، پنجشنبه ۱۵ مرداد ۱۳۹۴، ساعت ۱۹:۰۷
      این مشکل به دلیل انتخاب کدپیج نادرست هستش. با انتخاب کدوم کدپیج ، خروجی به این شکل دراومد؟ CP1252 ؟
      • #
        ‫۹ سال و ۲ ماه قبل، شنبه ۱۷ مرداد ۱۳۹۴، ساعت ۱۵:۲۷
        من بعد از دانلود کد از github با Arabic1256 = 1256 و کانکشن "Provider=VFPOLEDB.1;Data Source=" + fileLocation + ";Extended Properties=dBASE IV" این مشکل رو داشت. وقتی  تغییرات گفته شده در یک نکته تکمیلی را انجام دادم مشکل برطرف شد.
  • #
    ‫۹ سال و ۱ ماه قبل، شنبه ۲۴ مرداد ۱۳۹۴، ساعت ۱۶:۳۳
    سلام
    در تعریف فایل dbf در اجرای برنامه از local خطای The 'VFPOLEDB.1' provider is not registered on the local machine. را داشتم و فایل   VFPOLEDBSetup.msi را دانلود و نصب کردم و مشکل برطرف شد. بعد از اینکه برنامه را روی سرور آپلود کردم همین خطا را داشت و فایل  VFPOLEDBSetup.msi را روی سرور نصب و سرور را reset کردم اما همچنان همین خطا را میدهد.
    • #
      ‫۹ سال و ۱ ماه قبل، شنبه ۲۴ مرداد ۱۳۹۴، ساعت ۱۷:۱۸
      این درایور قدیمی، 32 بیتی هست. برنامه‌های دات نتی در سیستم‌های 64 بیتی زمانیکه در حالت AnyCPU کامپایل شده‌اند، امکان دسترسی به DLLهای native غیر 64 بیتی را ندارند.
      راه حل:
      - در مورد برنامه‌های Web، تنظیمات Any CPU و امثال آن تاثیری ندارند و مهم نیستند. در اینجا باید به تنظیمات Application pool در IIS مراجعه کرده و Enable 32 bit Applications را انتخاب کنید.


      - اگر برنامه‌ی دسکتاپ هست، باید platform target خواص پروژه را به X86 تنظیم کنید.
  • #
    ‫۹ سال و ۱ ماه قبل، یکشنبه ۲۵ مرداد ۱۳۹۴، ساعت ۱۴:۲۷
    کلاسی که برای تولید فایل‌های لیست بیمه استفاده کرده ام و فایل راهنمای تامین اجتماعی را در ضمیمه فرستادم. مشکلی که هست، بعد از ساخته شدن فایل وقتی در سایت تامین اجتماعی آپلودش میکنم خطا میده که فیلد LISTNO در فایل بیمه شدگان درست نیست. اگر میشه کلاس‌های convert و کدهای مربوط به نوشتن در فایل dbf رو ببینید که درست هست یا نه. ممنون.
    پروژه که کامل شد در سایت میذارمش که بقیه هم استفاده کنند. در اینترنت که سرچ میکردم خیلی‌ها برای تولید لیست بیمه از برنامه خودشون مشکل داشتند.
    • #
      ‫۹ سال و ۱ ماه قبل، یکشنبه ۲۵ مرداد ۱۳۹۴، ساعت ۱۵:۰۳
      بهترین کاری که می‌تونید انجام بدید این هست که یک نمونه دیتابیس مورد قبول رو پیدا کنید (با دیتا). بعد یک نمونه مشابه اون رو با برنامه‌تون تولید کنید. بعد فیلد به فیلد مقادیر رو مقایسه کنید و بررسی کنید کجاها تطابق نداره.
      • #
        ‫۹ سال و ۱ ماه قبل، یکشنبه ۲۵ مرداد ۱۳۹۴، ساعت ۱۷:۱۳
        این کار رو هم انجام داده بودم ولی باز هم از فایل ایراد میگیره.
        مشکل این هست که نرم افزار تامین اجتماعی طبق دستورلعمل خودش کار نکرده. مثلا در راهنما گفته در تاریخ از / استفاده نکنید و در متن عدد ننویسید اما در فایلی که برنامه خودشون میسازه تاریخ‌ها به صورت 94/04/04 هست و در برنامه هم اجازه نوشتن عدد در متن رو میده و در فایل هم در متن‌ها عدد هست.
        شاید در تبدیل یونیکد به ایران سیستم جایی اشتباه هست. عددها رو که نیاز هست که به ایران سیستم تبدیل کنم؟ من فقط متن‌ها رو تبدیل کردم و عددها رو مستقیم در dbf نوشتم.
  • #
    ‫۹ سال و ۱ ماه قبل، سه‌شنبه ۳ شهریور ۱۳۹۴، ساعت ۱۵:۴۲
    در این لینک function هایی در sql server تعریف شده که تبدیل ایران سیستم به یونیکد و برعکس رو انجام میده.
    ir_sys.rar
    من از این کد استفاده کردم و برای بعضی کلمه‌ها مثل لاله ، لیلا ، نازیلا و کلمه هایی شامل لا و ال مشکل داشت که تغییراتی در fnUnicodeToIranSystem انجام دادم و تا حدودی درست شد اما هنوز برای کلمه ای مثل "مالی" مشکل داره که به "ملی" و "ملای" تبدیل میشه. کلمه هایی که شامل ه هستند مثل "هانیه" یا "زهرا" هم روی سیستم خودم اگر تایپ شده باشه درست تبدیل میشه اما روی بعضی سیستم‌ها که تایپ میشه به "شانیه" و "زشرا" تبدیل میشه. ه به ش تبدیل میشه.   کسی میتونه راهنمایی کنه؟  
    تغییری که انجام دادم این بود که به جای 
    Set @Result = replace(@Result, char(145)+char(243), char(242))
    نوشتم 
    Set @Result = replace(@Result, char(243)+char(145), char(242))
    Set @Result = replace(@Result, char(242)+char(243), char(242)+char(145)+char(243))
    و برای رشته‌های عددی هم گفتم به جای 0 تا @Limit ، از @Limit تا 0 اجرا بشه چون عددهای از نوع رشته بعد از تبدیل برعکس میشد.
  • #
    ‫۹ سال و ۱ ماه قبل، جمعه ۶ شهریور ۱۳۹۴، ساعت ۰۱:۴۴
    جهت اطلاع
    تبدیلگر یونیکد به ایران سیستم به صورت یک pull request جدید به پروژه‌ی بحث جاری ارسال شد.
    • #
      ‫۹ سال و ۱ ماه قبل، یکشنبه ۸ شهریور ۱۳۹۴، ساعت ۱۷:۰۱
      مرسی با این کد کاملا صحیح کاراکترها تبدیل میشه. اما همچنان زمان آپلود فایل خطا میداد که مقدار فیلد شماره لیست در فایل بیمه شدگان صحیح نیست.
      یک راه دیگه رو امتحان کردم که بالاخره جواب داد! در فولدر DataBase برنامه تامین اجتماعی دو فایل DSKKAR00  و DSKWOR00 دیدم که فیلدها در آن‌ها تعریف شده بود ولی دیتا براشون ثبت نشده، حدس زدم که برنامه تامین اجتماعی هم از همین فایل‌ها استفاده میکنه.
      من در برنامه خودم کد مربوط به ایجاد فایل رو حذف و آدرس این فایل‌ها رو دادم که دیتا در این فایل‌ها Insert بشه و مشکل حل شد و سایت فایل‌های من رو قبول کرد !
      فایل راهنمای تامین اجتماعی که ساختار جدول‌های این فایل‌ها رو نوشته بود اشتباه بوده و نوع فیلدهایی که در اون فایل گفته بود در برنامه خودشون استفاده نشده و در سایت تامین اجتماعی هم قبول نمی‌کرد! 
    • #
      ‫۹ سال قبل، پنجشنبه ۲۶ شهریور ۱۳۹۴، ساعت ۱۳:۲۱
      سلام
      متاسفانه هنوز رشته ترکیبی از عدد و حروف انگلیسی در تبدیل برعکس میشه، مثلا وقتی دارم Rb0027 بعد از تبدیل میشه 0027bR . من اومدم قبل از تبدیل برعکسش کردم که درست بشه ورودی بهش 0027bR دادم و بعد از تبدیل همون Rb0027 که میخواستم رو تو سایت بیمه نمایش داد.
      • #
        ‫۹ سال قبل، پنجشنبه ۲۶ شهریور ۱۳۹۴، ساعت ۱۶:۴۵
        - مشکلات این پروژه را در اینجا گزارش کنید.
        - راه حل معکوس نشدن حروف انگلیسی در اینجا.
  • #
    ‫۴ سال و ۳ ماه قبل، جمعه ۲۶ اردیبهشت ۱۳۹۹، ساعت ۱۹:۲۸
    سلام.ایا راه حل ارائه شده در این مسئله مورد تایید هست ؟ 
  • #
    ‫۱ سال قبل، جمعه ۶ مرداد ۱۴۰۲، ساعت ۱۷:۳۷
    جهت اطلاع
    تبدیلگر ایران سیستم به یونیکد و برعکس، به «DNTPersianUtils.Core » اضافه شد.