逸逸记事
逸逸记事

我的分类(专题)

首页(175)
儿子(9)
SIP技术(9)
Web2.0(12)
摄影和DVD(8)
软件开发随笔(18)
名古屋打工生活(11)
微软技术开发(47)
Java技术(12)
加拿大移民生活(20)
生活点滴(6)
第一份工作--上海贝尔(18)
完成项目(13)
回国后的生活(0)


最新日志
独行者
终于知道什么叫外包了
人生悲哀之事
水晶报表中显示动态图片
水晶报表中的简单参数设置
怀念下小黑
dotnet中的数据连接Timeout
老板的思路
又买房了
交通事故

最新回复
回复:独行者
回复:怀念下小黑
回复:老板的思路
回复:mjSip学习笔记
回复:老板的思路
回复:dotnet中的数据连接Timeo
回复:mjSip学习笔记
回复:交通事故
回复:交通事故
回复:又买房了

留言板

签写新留言

您好,很希望问您一个关于jain-sip
生活经历就是最大的财富,羡哦~
java的Web开发问题
回复:疑问
IT还不如妓女呢,呵呵
myjavaserver的空间
求助
您的子域名已开通

统计
blog名称:人在旅途
日志总数:175
评论数量:505
留言数量:13
访问次数:1670632
建立时间:2005年12月7日

链接

 

生命是过客,人在旅途。奶奶是信基督教的,没啥文化,却养育了四子二女,还带过九个孙辈。老人家对生命的看法就是“人都是客人,迟早要回去的。”就以《人在旅途》来纪念她。

 

«September 2025»
123456
78910111213
14151617181920
21222324252627
282930

公告
  本人上传的源程序中可能引用或使用了第三方的库或程序,也可能是修改了第三方的例程甚至是源程序.所以本人上传的源程序禁止在以单纯学习为目的的任何以外场合使用,不然如果引起任何版权问题,本人不负任何责任.




     本站首页    管理页面    写新日志    退出
调整中...
[软件开发随笔]关于文字列以及它的编码问题
人在旅途 发表于 2006/5/17 14:31:00

  文字列的编码有ASCII,JIS,国标,BIG5...一种语言常常有好几种编码,编程序的时候常常为码的转化而苦恼.    码的转化发生在文字列的输入和输出.要弄清这个问题首先要明白文字列的表现和存在.表现就是我们肉眼看到的形式,存在就是它的两进制流(无论你是用byte[]还是文件来保存,它都是两进制的格式)和这个两进制流的编码方式.光有两进制流还不够,系统要知道它的编码方式才能从相应字库里调出它的显示图片,这样你才能看到它的形式.    我们之所以觉得这个问题很麻烦是因为我们经常是只把这个两进制流保存了,而它的编码方式没有保存,而下次读进来的时候也没有指定它的编码方式.这是因为一个系统有她缺省的编码方式,如果你不指定就用她缺省的编码方式了.这在一个系统或缺省编码相同的系统之间是没问题,但是如果你的文字列要在不同缺省编码方式的系统之间共用(转送),而你还是不指定编码方式,那么发和收系统之间就是鸡对鸭讲,屏幕上就要显示乱码了.    比如日文有好几种编码,主要是JIS和EUC.JIS是WINDOWS的缺省编码,EUC是UNIX的缺省编码.如果你把一个在WINDOWS上保存的TEXT文件传到UNIX上,然后在UNIX上打开就是乱码了;反之,如果你把一个在UNIX上保存的TEXT文件传到WINDOWS,然后在WINDOWS上打开也是乱码了.所以为了正确的显示所传文件,发和收的一方必须做码变换.现在很多FTP软件就带有这种功能.    你在使用IE时,有时要用encoding菜单来切换,因为发现是乱码.但 现在的INTERNET的数据格式已经解决了这种两进制流和编码格式分离的情况,比如在HTML和XML格式中都可以指定编码格式,如果HTML中指定了编码格式,你就没必要用encoding菜单来切换了.    具体到编程上,在现在的操作系统上,一个String内保存的两进制数据流的编码是UNICODE.UNICODE是一种包容所有国家编码的格式,所以它被用在内存形式的文字列编码(String),但它的缺点是太大(是ASCII的4倍),所以它不被用在文件的保存和网上的传输.所以当你为了把String保存到硬盘文件或者通过SOCKET等传达其他系统,而把UNICODE格式的String变成byte[]时就需要指定变换后的编码格式或者使用系统缺省的格式来变换了.尤其是你没有指定编码格式而使用系统缺省编码格式来转变,而后又把它传输到另一个缺省编码不同的系统上,那么在那个系统接受到这个两进制流后就要把它从前一系统的统缺省编码格变换成UNICODE编码格式的String了.实践中常常是在你指定编码格式前,系统已经把它作为本系统的缺省编码格式来变换成UNICODE编码格式的String了.这时候,你只好先把这个UNICODE编码格式的String先变换成本系统的缺省略编码格式二进制流(byte[]),然后再把它作为前一系统的省略编码格式的二进制流(byte[])而变换成UNICODE编码格式的String.    记住,String里保有编码格式和两进制流,而byte[]中只有两进制流.

阅读全文(3125) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144791771 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号