2014-09-21 94 views
0

你好,我有生成条形码的这个简单的例子,并对其进行解码再次使用Spire.Barcode库与条形码阅读器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 2014-09-21 13:56:02

回答

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; 
     }