UTF8转成GB2312乱码问题解决方案
作者:SunnyJourney
时间:2026-07-22
浏览:6
最近在做一个项目时,遇到了一个挺典型的问题,这里记录一下,也算是一次经验总结。 项目本身分为两大块:一是新闻数据采集,二是采集信息的审核,最后还要生成XML文件。数据采集完成后,经过人工编辑,需要导出一个ACCESS文件,再把这个文件导入到信息审核系统。在ACCESS库里,存储新闻信息的字段类型是`
本文目录
最近在做一个项目时,遇到了一个挺典型的问题,这里记录一下,也算是一次经验总结。
项目本身分为两大块:一是新闻数据采集,二是采集信息的审核,最后还要生成XML文件。数据采集完成后,经过人工编辑,需要导出一个ACCESS文件,再把这个文件导入到信息审核系统。在ACCESS库里,存储新闻信息的字段类型是`ntext`,而审核系统对应的字段是`varchar(max)`。导入之后,发现有些“空白字符”变成了乱码——具体表现就是问号(?)。后来经过反复测试,发现这些根本不是普通的空格,而是一种特殊字符。
那怎么办?几番折腾后找到的第一个方案是:把`varchar(max)`类型改成`nvarchar(max)`,这样导入的数据就不会再出现这类问题了。但问题并没有彻底解决——后续测试中,对导入后的信息进行修改(通过.NET程序编辑功能)后,数据库中这条记录又出现了乱码。进一步研究发现,只要在插入语句里这样写就没问题了:
```sql
insert into 表名 (news) values(N'更新后的值')
```
为什么加个`N`?去百度一下就能明白,这里不展开说。
到这一步,总算松了口气。但后面的问题又让人陷入郁闷……
审核完成的信息需要生成XML文件,而且要求XML使用GB2312编码。因为采集的新闻网站很多采用UTF-8编码,在转换过程中又出现了乱码——还是那个“空白”特殊字符搞的鬼。网上查到的方案是把UTF-8转成GB2312,但实际一试,根本解决不了。折腾了一上午,还是没辙。
正郁闷的时候,突然想到,不如用Visual Studio的调试功能,看看这个特殊字符到底是什么玩意儿。把数据库里的字段值读出来,然后转成字符数组:`content.ToCharArray();`,一个一个地看,终于发现那个导致乱码的字符是 `' '`(注意引号中的空白,这不是一个空格,而是一个在GB2312中无法识别的特殊字符)。这时候灵机一动:能不能直接用空格替换掉这个字符?马上行动,果然,乱码问题解决了。
真是让人郁闷,这么一个不起眼的字符,竟然浪费了大半天时间。
注意:替换时一定要用调试出来的那个真正的值(这才是导致乱码的特殊字符),调试时在即时窗口中粘贴即可。
```csharp
content = content.Replace(" ", " ");
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
漫蛙下载最新版本
2026-10-13 13:42
漫蛙app下载安装最新版
2026-10-13 13:42
漫蛙2漫画APP免费下载安装最新版本
2026-10-13 13:20
漫蛙漫画网页下载安装最新版本
2026-10-13 13:17
keyshot快捷键命令大全表格整理与使用教程
2026-10-12 14:13
上一篇:
关联数据入门——RDF应用
下一篇:
xml创建节点(根节点、子节点)
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多































