PDF417条码加入中文
最近写PDF417二维条码,在网上下了开源代码,有两个文件:Pdf417lib.cs和SupportClass.cs文件,是老外写的,不过不支持中文。
网上提供一个方法,将方法:
- C# code
internal protected sbyte[] Filter(string sValue) { sbyte []sArray = new sbyte[300]; try { Char [] cArray = sValue.ToCharArray(); for(int k = 0; k < cArray.Length; k++) { sArray[k] = Convert.ToSByte(cArray[k]); } return sArray; } catch(Exception e) { //MessageBox.Show(e.Message, "Error", // MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return null; } }
改为:
- C# code
internal protected byte[] Filter( string sValue ) { //如果Utf8不行就换成Unicode,记不清到底用哪种编码了 byte[] sArray = System.Text.Encoding.UTF8.GetBytes( sValue ); return sArray; }
然后将相关数据类型由sbyte改成byte,或者你将该方法返回值转换成sbyte[]
我按照上面提示进行修改,遇到提示,无法将类型“byte[]”隐式转换为“sbyte[]”,于是在方法Filter()中,将方法返回值转换为sbyte[]。
- C# code
internal protected sbyte[] Filter(string sValue) { byte[] sArray = System.Text.Encoding.Unicode.GetBytes(sValue); //将byte[]类型转换为sbyte[]类型 sbyte[] mySByte = new sbyte[sArray.Length]; for (int i = 0; i < sArray.Length; i++) { if (sArray[i] > 127) mySByte[i] = (sbyte)(sArray[i] - 256); else mySByte[i] = (sbyte)sArray[i]; } return mySByte; }
但是打出来的二维条码图片,扫描出来是乱码。请问,谁有类似的解决经验吗?
[解决办法]
sbyte: -128~127
byte: 0~255
[解决办法]
bye -> sbye 不是少了一截么?
byte[] sArray = System.Text.Encoding.Unicode.GetBytes("嘿嘿");
string str =System.Text.Encoding.UTF8.GetString(sArray);
str = ?V?V
介个不是中文吧……