近来做了一个小项目,碰到此类题目,纪录一下,也算是一个总结。
此项目分为两部分,一个是消息数据收集,一个是收集信息的考核,末了生成XML文件。
数据收集后的数据经由用户编辑完以后,要导出一个ACCESS文件,然后把这个文件导入到信息考核体系。在ACCESS库中存储消息信息的字段范例是ntext范例,而考核体系库中对应的是varchar(max)范例的字段,导入以后,发明有的空缺字符会涌现乱码,表现为问号(?),实在经由背面的测试,这不是空缺(空格)字符,而一个特别字符,怎么办?经由几番测试后发明,varchar(max)范例要改成nvarchar(max)范例,如许导入的数据就不会再有此类题目了。
但背面的测试过程当中,又会发明对导入后的收集信息变动(经由过程.net顺序编辑功用)后,数据库中此条信息又涌现了乱码题目,研讨后发明在插入语句中如许写就不会涌现此类题目了,如insert into 表名 (news)values(N'"+更新后的值+""),为何加N?去百度一下就邃晓了。
到此,心中总算获得慰藉,但背面的题目又让人堕入忧郁当中。。。。。。
考核完的信息要生成XML范例的文件,而且XML要采纳GB2312编码,由于收集的消息网站,有许多网站采纳的是UTF8编码,如许在转化的过程当中又涌现乱码(照样谁人“空缺”特别字符搞的),怎么办?网上引见的把UTF8转化成GB2312就能够了,但现实发明,照样处理不了题目,这下弄的一上午为了处理这个题目,末了照样没有办法,正忧郁之时,倏忽想到经由过程VS的调试功用来看看这个特别字符终究是什么玩意,末了经由过程把数据库的此字段值读取出来以后,然后转化成字符数组,content.ToCharArray(); 一个一个的看,发明,致使乱码的这个字符是' '注重引号中的空缺,这不是一个空格,而是一个在GB2312中没法辨认的特别字符,此时倏忽想到,能不能把这个字符的值直接用空格替代呢?立时行为,果真,处理了乱码题目。真求忧郁,这一个毛玩意浪费了一半天时刻。
注重,必需要用调试出来的这个值(由于这才是真正的致使乱码的谁人特别字符),调试的时刻在纵然窗体中粘贴。
代码以下:
content = content.Replace(" ", " ");
以上就是【XML】UTF8和GB2312编码转换涌现乱码的处理方案的细致内容,更多请关注ki4网别的相干文章!