首页
技术库|站长工具|技术手册|字体库|知识点词汇表| 联系我们|
打开本页的html静态页面
 

主菜单

文章分类

.: .Net技术 .: 问题集锦 .: 关于unicode字符内码在.net中的转换

  • 全文内容
  • 发表评论
  • 文章点评
  • 文章附件
  • Email文章
  • 打印文章

关于unicode字符内码在.net中的转换

点击次数:203 创建日期:7-28-2008 录入:cn-web.com 字体:[ ] 点评:


问题描述:
用c#写了一个小程序,用来抓取网页,当网页编码单一时,可以正常,当抓取目标页面存在多个编码时(如果中文和繁体共存),就会出现部分字符转义,如(语言工具:语言工具),虽然源码被转义成#&xxxxx形式,但是IE显示还是正常显示的。
出现问题,想办法解决吧。
首先需要确定#&xxxxx形式的编码到底是什么东东,从网上搜索了很多资料,都是关于乱码的解决方案,没有关于#&xxxxx方面的信息。
很是纳闷,#&xxxxx形式的编码肯定不是乱码,因为它能正常显示字符,可是它到底是什么呢,怎么能给它逆转到正常字符呢。
浪费了近一周的时间,真想放弃。
 
无助时,联系了北京朋友来探讨这一问题,还是朋友有耐心,帮我查到#&xxxxx其实是字符的unicode内码。
知道这个情况后,就好办多了。不过怎么能将unicode内码转回字符呢,这可又范愁了,从网上搜索了N多资料,没有结果。不过找到了类似javascript解决unicode内码的问题,我当时没有看它是怎么实现的,因为考虑了一下,.net通过javascript来转换内码,浪费性能,不太现实(因为我的字符集非常大)。
朋友又给我发了N个语言的unicode的内码库,我看了部分,有的库太大,还没打开都死机了,如果通过这种方式来批量查找替换内码,更是不现实。
 
快下班时,朋友给发了EMAIL,说是找到了javascript能解决这一问题,我只看了下标题,不想往下看,因为这块我以前也注意过,应当解决不了问题。
在关闭邮件的同时,忽然想到,是否可以借鉴下javascript,看它是如果转换的,我不相信它能解决的问题.net无能为力?
 
打开javascript函数,一看,恍然大悟,真是简单问题复杂化了,浪费了我近两周的时间研究这个小问题:
javascript实现办法:
<script>
function unicode(s){
 var len=s.length;
 var rs="";
 for(var i=0;i<len;i++){
 var k=s.substring(i,i+1);
 rs+="&#"+s.charCodeAt(i)+";";
 }
 return rs;
}

function runicode(s){
 var k=s.split(";");
 var rs="";
 for(i=0;i<k.length;i++){
 var m=k.replace(/&#/,"");
 rs+=String.fromCharCode(m);
 }
 return rs;
}
alert(unicode("老韩测试"));
</script>
由上可知,javascript通过函数fromCharCode就可以实现转换,.net里有类似对应的类型:char。
转换很简单,一句话解决问题:
char a = (char)35821;
Response.Write(a.ToString());  
 
OK,知道原理后,就可以写程序批量获取被转义的字符来转换了。
 
经过此事,打击不小,不过还好没有放弃。

请文明参与讨论,禁止漫骂攻击。
评论总数:0 [ 查看全部 ] 网友评论
此文章还没有任何评论!
(+5分)
(+4分)
(+3分)
(+2分)
(+1分)
此内容无附件
网站地图 - 知识词汇 - 全文检索 - 广告服务 - 帮助中心 - 联系我们
.:www.cn-web.com
网站技术开发联盟之WEB开发技术知识库
联系人:老韩(QQ:5679551(业务),688464(技术))
晋ICP备07003487号