读书人

PDF417条形码加入中文

发布时间: 2012-11-12 12:31:58 作者: rapoo

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
介个不是中文吧……

读书人网 >C#

热点推荐