2014-09-21 54 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; 
     }