2014-09-21 19 views
0

Привет У меня есть этот простой пример создания штрих-кода и декодирования его снова с использованием библиотеки Spire.BarcodeDecode Non-английский текст со считывателем штрих-кода C# .NET

 BarcodeSettings bcsettings = new BarcodeSettings(); 
     bcsettings.Data = "مرحباً"; 
     bcsettings.Type = BarCodeType.DataMatrix; 
     BarCodeGenerator bcgen = new BarCodeGenerator(bcsettings); 
     System.Drawing.Image bcimg = bcgen.GenerateImage(); 
     System.Drawing.Bitmap bcbitmap = new System.Drawing.Bitmap(bcimg); 
     String bcdata = BarcodeScanner.ScanOne(bcbitmap); 
     output.Text += bcdata; 

пример работает очень хорошо с английским но вывод показывает это, когда я использую арабский язык.

Barcode output for Arabic

Есть в любом случае, чтобы исправить это?

Заранее спасибо.

+0

Это зависит от вашего 'BarcodeScanner'. – AgentFire

ответ

0

вы можете использовать ниже код для Вашего проекта:

private void button1_Click(object sender, EventArgs e) 
     { 
      BarcodeSettings bcsettings = new BarcodeSettings(); 

      bcsettings.Data = GetEncodingText("مرحباً"); 
      bcsettings.Data2D =GetEncodingText("مرحباً"); 

      bcsettings.Type = BarCodeType.DataMatrix; 
      BarCodeGenerator bcgen = new BarCodeGenerator(bcsettings); 
      System.Drawing.Image bcimg = bcgen.GenerateImage(); 
      System.Drawing.Bitmap bcbitmap = new System.Drawing.Bitmap(bcimg); 
      String bcdata = BarcodeScanner.ScanOne(bcbitmap); 
      output.Text += GetDecodingText(bcdata); 

     } 
     public string GetEncodingText(string unicodeStr) 
     { 
      string encodingResult = ""; 
      byte[] byteArray = Encoding.Unicode.GetBytes(unicodeStr); 
      foreach (byte b in byteArray) 
       encodingResult += (char)b; 
      return encodingResult; 
     } 
     public string GetDecodingText(string unicodeStr) 
     { 
      string decodingResult = ""; 
      List<byte> bytes = new List<byte>(); 
      foreach (char c in unicodeStr) 
       bytes.Add((byte)c); 
      decodingResult = Encoding.Unicode.GetString(bytes.ToArray()); 
      return decodingResult; 
     } 
Смежные вопросы