日期:2014-05-17  浏览次数:20869 次

C# string编码问题求解
C# code
       //打开USB读卡器端口
                int port = 100;
                IniPort(port);
                TSSCInfo info = new TSSCInfo();
                IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TSSCInfo)));
                Marshal.StructureToPtr(info, ptr, false);
                int rtnVal = rdInfo_SSCID(ptr);
                info = (TSSCInfo)Marshal.PtrToStructure(ptr, typeof(TSSCInfo));
                string ylzh = System.Text.Default.UTF32.GetString(info.SSCID);


代码是读IC卡的段落,我要通过最终读出来的ylzh,来调用软件商给的接口函数获取信息,我直接在文本框输入测试的字符串就可以正常调用,但是通过这个代码读出来的字符串就不行,我测试的时候输出上面代码读取的字符串是正确的,就是调用不了,提示错误大概是字符里面有错之类的,是C#报出来的错误。
看了一篇关于string编码的问题,我又测试转换成ASCII、UTF8、Unicode,结果一样是调用不了,我的想法就是转换成跟输入在textbox里面的编码方式一样就可以了,但是不知道是哪种,求大侠指点!坐等

------解决方案--------------------
用这个试试!我的串口通信也出现过你的情况,我的解决方法是
C# code
string ylzh = System.Text.ASCIIEncoding.GetEncoding("gb2312").GetString(info.SSCID);