代码页

摘要:
在网上学习,知道了其实编码规则是由许多的代码页决定的,但vs2005帮助里只提到几种编码:utf-8,utf-7,unicode等,基本都是多字节的。我希望的,还是单字节的代码页,能够支持全字节的转换的,127之上的字节,显示为乱码也无所谓。关于代码页,http://amoderlan.blogbus.com/logs/4860636.html比较靠谱,其他还有一些,列的东西到多,但是很多都是空的,难于检查。为了得到我想要的东西,写了一小段程序,检查各个代码页的效果。
  最近写一个网络程序时,碰到字符串和字节数组之间的转换问题,开始时还比较简单,字符串都是标准的Ascll编码,处理起来比较简单:
字符串转字节数组 byte [] bts=Encoding.ASCII.GetBytes(str);
字节数组转字符串 string str=Encoding.ASCII.GetString(bts);
但是后来发送的数据不仅仅是Ascii码了,而是连普通字节都有,这种情况下,就比较麻烦了,因为ASCII代码页(这还是后来才学到的)只支持7个位,也就是说,高位为1的话,全部被转化为63,显示为?。逆向转换就不行了。
在网上学习,知道了其实编码规则是由许多的代码页决定的,但vs2005帮助里只提到几种编码:utf-8,utf-7,unicode等,基本都是多字节的。
我希望的,还是单字节的代码页,能够支持全字节的转换的,127之上的字节,显示为乱码也无所谓。
关于代码页,http://amoderlan.blogbus.com/logs/4860636.html 比较靠谱,其他还有一些,列的东西到多,但是很多都是空的,难于检查。
为了得到我想要的东西,写了一小段程序,检查各个代码页的效果。
代码页第1张byte[]bys=newbyte[4];
代码页第1张bys[
0]=56;
代码页第1张bys[
1]=156;
代码页第1张bys[
2]=156;
代码页第1张bys[
3]=56;
代码页第1张
代码页第1张
byte[]b2=newbyte[4];
代码页第1张
代码页第1张Encodingen
=Encoding.GetEncoding(20127);
代码页第1张
stringret="";
代码页第1张ret
+="编码名称:"+en.EncodingName+Environment.NewLine;
代码页第1张ret
+="编码代码:"+en.CodePage.ToString()+Environment.NewLine;;
代码页第1张ret
+="是否单字节:"+en.IsSingleByte.ToString()+Environment.NewLine;
代码页第1张ret
+="字符串长度:"+en.GetString(bys).Length.ToString()+Environment.NewLine;
代码页第1张ret
+="内容:"+en.GetString(bys)+Environment.NewLine;
代码页第1张b2
=en.GetBytes(en.GetString(bys));
代码页第1张
stringdc="成功";
代码页第1张
for(inti=0;i<bys.Length;i++)
代码页第19张代码页第20张
代码页第21张{
代码页第22张
if(bys[i]!=b2[i])dc="失败";
代码页第23张}

代码页第1张ret
+="两次转换能否还原:"+dc+Environment.NewLine;
代码页第1张textBox1.Text
=ret;

得到了我想要的东西:

编码名称:US-ASCII
编码代码:20127
是否单字节:True
字符串长度:4
内容:8??8
两次转换能否还原:失败

编码名称:IBM EBCDIC (美国-加拿大)
编码代码:37
是否单字节:True
字符串长度:4
内容:˜ææ˜
两次转换能否还原:成功

编码名称:OEM 美国
编码代码:437
是否单字节:True
字符串长度:4
内容:8££8
两次转换能否还原:成功

编码名称:IBM EBCDIC (国际)
编码代码:500
是否单字节:True
字符串长度:4
内容:˜ææ˜
两次转换能否还原:成功

编码名称:阿拉伯字符(ASMO-708)
编码代码:708
是否单字节:True
字符串长度:4
内容:8œœ8
两次转换能否还原:成功

编码名称:阿拉伯字符(DOS)
编码代码:720
是否单字节:True
字符串长度:4
内容:8££8
两次转换能否还原:成功

编码名称:希腊字符(DOS)
编码代码:737
是否单字节:True
字符串长度:4
内容:8εε8
两次转换能否还原:成功

编码名称:OEM 西里尔语
编码代码:855
是否单字节:True
字符串长度:4
内容:8юю8
两次转换能否还原:成功
有兴趣还可以检查其他的代码页,这是源代码:
https://files.cnblogs.com/jetz/WindowsApplication1.rar

免责声明:文章转载自《代码页》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(转)Linux下部署tomcat及tomcat war包应用程序Centos安装php php-fpm 以及 配置nginx下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

gzip压缩算法

gzip,zlib,以及图形格式png,使用的是同一个压缩算法deflate。我们通过对gzip源码的分析来对deflate压缩算法做一个详细的说明: 第一,gzip压缩算法基本原理的说明。 第二,gzip压缩算法实现方法的说明。 第三,gzip实现源码级的说明。 1. Gzip压缩算法的原理          gzip 对于要压缩的文件,首先使用LZ7...

bcp命令详解转载

bcp命令详解 bcp 实用工具在 Microsoft? SQL Server? 2000 实例和数据文件之间以用户指定的格式复制数据。 语法 bcp {[[database_name.][owner].]{table_name | view_name} | "query"}       {in | out | queryout | format} da...

解决PHP json_encode() 编码字符中包含<>时,转化为\u003E\u003C

一、PHP json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES php格式化json的函数 json_encode($value,$options) 其中有2个比较常用到的参数 JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256) J...

ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别(转载)

原文出处:http://www.blogjava.net/xcp/archive/2009/10/29/coding2.html  最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总结网上一些朋友提供的 ascii,ISO-8859-1,unicode, utf8,gb2312,big5,gbk,gb18030等几种常区别.     1. ASC...

shiro中编码/加密

在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码。比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储。 5.1 编码/解码 Shiro提供了base64和16进制字符串编码/解码的API支持,方便一些编码解码操作。Shiro内部的一些数据的存储/表示都使用了base64和16进制字符串。...

Qt 中文乱码解决方案

一、问题是什么?在学习Qt编程的过程中,大多数人都遇到过中文乱码的问题。总结起来有三类: 1. Qt Creator中显示的汉字变为乱码,编辑器上方有“Could not decode "..." with "UTF-8"-encoding. Editing not possible.”的错误提示。此时,出现乱码的文档是不可编辑的。2. Qt Creato...