字符编码

     在帮忙测试同事写的一个软件的时候出现了一个问题:读取本地文本文件(*.ini),文件中存在中文(省的名称),经过第三方库函数做GB 转 utf-8后经过网络发送出现乱码的情况。审查代码发现没有错误,定位的问题是文本文件的编码方式是UTF-8,但代码里面做的是GB转utf-8,文本文件改为ANS后正常。关于ANSI编码,百度百科解释:

    不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、Big5、Shift_JIS 等各自的编码标准。这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。当然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ANSI编码与Unicode编码之间最大也最明显的区别。

    所以出现乱码的情况时,首先检查的是读取的文件的编码方式和代码中的是否保持一致。对编码方式讲解的很好的一篇文章http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=201220823&idx=2&sn=b5890e7f65244dcb8dffac824c1820e9&mpshare=1&scene=1&srcid=0322cCyVWRIeQTvoSnYTqvsY#rd。

   

URL中存在特殊字符

    在测试FTP文件传输时报错,审查了多次代码都觉得没有问题,找了各种资料也没有定位问题。最终拿实际的测试数据测试时发现,URL中存在“#”特殊字符。URL中存在特殊字符时需要将特殊字符转为16进制(目前我用的一种方法,也许有更好的)。   uri = newUri(uri.ToString().Replace("#", Uri.HexEscape('#'))).ToString();如果不确定有什么特殊字符应该考虑正则表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值