• 字符乱码问题小结


    在工作中,有时会遇到一些字符编码上的问题,一旦文件的编码格式与源文件的编码格式不一致,代码中的一些字符(大多数情况下是中文)就很有可能会出现乱码现象。当时,自己经验不足的时候,要解决这类问题,也常常会让自己耗费不少的时间,现在,根据一些资料来作出一些整理,以便日后的工作中可以更有效率地解决重复问题。

    一 常用的字符编码

    首先介绍一下计算机中一些主流常见的编码。

    1.1 GBK & GB2312 (中文)

    • GB2312
      它是一个简体中文字符集,由 6763 个常用汉字和 682 个全角(指一个字符占用两个标准字符位置的状态)的汉字字符组成。
      GB2312 编码使用两个字节(8位2进制)表示一个汉字,理论上最多可以表示 256 * 256 = 65536 个汉字。这个编码仅在中国可以正常使用,如果是其它国家的网友访问你使用 GB2312 编码的网站,就会出现乱码显示,因为他们的浏览器并不是使用 GB2312 编码格式。

    • GBK
      GBK 主要是为了解决 GB2312 不能表示的生僻字而出现的。

    1.2 Unicode(UTF-8 & UTF-16 & UTF-32)

    Unicode 编码也称为万国码,它是计算机科学领域的一项业界标准。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

      Unicode 比 ANSI 好用。现在 WIN 的系统内核开始完全支持并完全应用 Unicode 编写,所有 ANSI 字符在进入底层之前,都会被 API 转换成 Unicode。基于此,所以你一开始就是用 Unicode 编码就可以减少转换的用时和 RAM 开销。
      另外在语言中 JAVA / .NET 内置的字符串所使用的字符集已经完全是 Unicode。最重要的是,现在世界上大多数程序用的字符集都是 Unicode。
    

      不过 Java 中 Unicode 使用 16 进制编码(可以使用 UTF-8 解决),编码太庞大会造成网络传输的负担。

    1.3 ISO8859-1

      ISO8859-1 是国际通用编码,一般只有字母就使用此编码格式。它是单字节编码,向下兼容 ASCII,其编码范围是0x00-0xFF。

    二 乱码出现的分析

      可以使用下面这段代码,查看系统的属性列表:

    1. public class Test{
    2. publicstaticvoid main(String[] args){
    3. System.getProperties().list(System.out);
    4. }
    5. }

      运行此代码,结果如下(截取部分内容):

    … …
      同时,应该需要注意这个属性:

      需要明白乱码出现的本质:其实就是编码格式和解码格式不一致造成的。





  • 相关阅读:
    Java 报错 -source 1.5 中不支持 diamond 运算符
    MacBook Java开发环境的配置
    MacBook 版本控制工具
    版本控制工具 Git SourceTree SSH 连接码云
    接口 请求https接口
    快递 共享电子面单
    快递 已发货订单重新打印电子面单
    SQL Server 分部分项导入后 数据的修改
    Hive数据的存储以及在centos7下进行Mysql的安装
    Hive初体验
  • 原文地址:https://www.cnblogs.com/archy2016/p/7384938.html
Copyright © 2020-2023  润新知