字符编码的问题

原创 2012年03月22日 19:46:40
今天又出现一个字符编码的问题,jvm默认的是用的与本地操作系统有关系,一般是iso-8859-1编码,此对中文是丢失的。
那下面我简单讲下,对于编码的理解。
【导言】
计算机是处理数字与字母的。在创造Unicode之前,有数百种指定这些数位的编码系统,没有一个编码可以包含足够的字元。

有如此所的编码,每个之间还存在冲突,所以就必要要有一个强大的编码系统,能处理所有的字符,一统江湖。那Unicode就出现了。
Unicode就是我们经常讲的 统一码、标准国际码。

简单地讲,Unicode就规定了 字符与 8个16进制之间的关系。并规定,如果最小的字节能表示的话,那就用最小字节。如:字母数字,用两位,汉子用四位。
【其他编码咋回事?】
     我们接触的编码常见的有:
"iso-8859-1""gb2312""gbk""utf-16""utf-8" 
其他的编码就是对Unicode的号码,再进行一个算法的运算如已。
注意iso-8859-1是对ASCII 码的扩展,不能用来编码汉字
     如:Unicode码为:49,20,61,6d,20,66f9,9f99,
      String strings = "I am 曹龙";

        char[] chars = strings.toCharArray();
        for (char b : chars) {
            System.out.print(b + ",");
        }
        System.out.println();
        for (char b : chars) {
            System.out.print(Integer.toHexString(b) + ",");
        }
        String[] charsets = { "iso-8859-1""gb2312""gbk""utf-16""utf-8" };
        for (String charset : charsets) {
            System.out.print("\n" + charset + ":");
            for (byte b : strings.getBytes(charset)) {
                System.out.print(Integer.toHexString(b) + ",");
            }
        }
输出的结果为:
I, ,a,m, ,曹,龙,
49,20,61,6d,20,66f9,9f99,
iso-8859-1:49,20,61,6d,20,3f,3f,
gb2312:49,20,61,6d,20,ffffffb2,ffffffdc,ffffffc1,fffffffa,
gbk:49,20,61,6d,20,ffffffb2,ffffffdc,ffffffc1,fffffffa,
utf-16:fffffffe,ffffffff,0,49,0,20,0,61,0,6d,0,20,66,fffffff9,ffffff9f,ffffff99,
utf-8:49,20,61,6d,20,ffffffe6,ffffff9b,ffffffb9,ffffffe9,ffffffbe,ffffff99,
【参考资料】


文件编码与字符编码

文件编码与字符编码首先明确一点,文件不存在什么编码(归根结底文件都是二进制文件,用ue打开可以看到都是一个个的16进制数),只有文件中的字符才可以说编码。编码与解码过程字符通过某种编码组织起来存到文件...
  • sun_abc
  • sun_abc
  • 2010年05月14日 13:47
  • 3870

Ubuntu里字符编码设置

Ubuntu里字符编码设置   Ubuntu系统在默认的状况下只支持中文UTF-8编码,但是我们写的一些文档,还有java代码编译时采用gbk编码。所以需要修改。步骤如下:  www.2c...
  • u014755532
  • u014755532
  • 2014年11月05日 23:14
  • 536

Oracle修改默认字符编码

--查看Oracle数据库字符集:  Sql代码   select userenv('language') from dual;   查询结果:  SIMP...
  • chengyingmingcheng
  • chengyingmingcheng
  • 2014年08月24日 01:25
  • 785

【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法

Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误。 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法...
  • gmj4850
  • gmj4850
  • 2013年12月04日 11:10
  • 1245

字符集编码发展简史

字符集编码发展到今天,其实经历了一个漫长而曲折的过程。从开始的ASCII,到后来的ANSI,再到现在的UNICODE。 计算机是由发达资本主义国家发明的,而这些国家基本都是英语国家,用8位(256中...
  • hehonglei2009
  • hehonglei2009
  • 2011年12月16日 15:53
  • 285

字符编码的问题详解

Unicode(UTF-8, UTF-16)令人混淆的概念 为啥需要Unicode         我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比...
  • pigsir
  • pigsir
  • 2015年11月18日 21:38
  • 163

关于字符编码的问题

 这几天一直在改“前辈”流下来的一个程序, 其中让我很无语的是 。 他的字符编码居然全在servlet 中进行转码的, 就是这样:String submit = new String(request....
  • tjzero_sapce
  • tjzero_sapce
  • 2009年03月24日 11:33
  • 356

关于字符编码的问题

   写程序的人基本上都会遇到乱码的问题,之前自己对字符集、编码等问题也是一知半解,大概明白什么意思,但却说不清楚。由于公司需要做多语言,于是研究了一下,终于把字符集和编码等问题弄明白了。   asc...
  • micor
  • micor
  • 2010年04月29日 15:03
  • 175

字符编码的问题

今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编...
  • yanzhaohandan
  • yanzhaohandan
  • 2014年02月11日 22:02
  • 210

手机短信字符编码的问题

这几个月作手机短信的项目,碰到了很多字符编码的问题,真头痛。经过多番资料的搜索、亲手尝试和高人的指点,现在好像没那么迷惘了。现作了一些总结跟大家分享(有误之处请指点)               ...
  • liubin15989534919
  • liubin15989534919
  • 2011年09月30日 12:08
  • 838
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符编码的问题
举报原因:
原因补充:

(最多只允许输入30个字)