在计算机中,任何的文字都是以指定的编码方式存在的,在 Java 程序的开发中最常见的是 ISO8859-1、GBK/GB2312、Unicode、 UTF 编码。

Java 中常见编码说明如下:

 ISO8859-1:属于单字节编码,最多只能表示 0~255 的字符范围。GBK/GB2312:中文的国标编码,用来表示汉字,属于双字节编码。GBK 可以表示简体中文和繁体中文,而 GB2312 只能表示简体中文。GBK 兼容 GB2312。Unicode:是一种编码规范,是为解决全球字符通用编码而设计的。UTF-8 和 UTF-16 是这种规范的一种实现,此编码不兼容 ISO8859-1 编码。Java 内部采用此编码。UTF:UTF 编码兼容了 ISO8859-1 编码,同时也可以用来表示所有的语言字符,不过 UTF 编码是不定长编码,每一个字符的长度为 1~6 个字节不等。一般在中文网页中使用此编码,可以节省空间。

在程序中如果处理不好字符编码,就有可能出现乱码问题。例如现在本机的默认编码是 GBK,但在程序中使用了 ISO8859-1 编码,则就会出现字符的乱码问题。就像两个人交谈,一个人说中文,另外一个人说英语,语言不同就无法沟通。为了避免产生乱码,程序编码应与本地的默认编码保持一致。

本地的默认编码可以使用 System 类查看。Java 中 System 类可以取得与系统有关的信息,所以直接使用此类可以找到系统的默认编码。方法如下所示:

public static Properties getProperty()

查看 JVM 的默认编码,代码如下:

public static void main(String[] args) {// 获取当前系统编码System.out.println("系统默认编码:" + System.getProperty("file.encoding"));
}

运行结果如下:

系统默认编码:GBK

可以看出,现在操作系统的默认编码是 GBK。

示例乱码的产生。现在本地的默认编码是 GBK,下面通过 ISO8859-1 编码对文字进行编码转换。如果要实现编码的转换可以使用 String 类中的 getBytes(String charset) 方法,此方法可以设置指定的编码,该方法的格式如下:

public byte[] getBytes(String charset);
示例代码如下:
public class Test {public static void main(String[] args) throws Exception {File f = new File("D:" + File.separator + "test.txt");// 实例化输出流OutputStream out = new FileOutputStream(f);// 指定ISO8859-1编码byte b[] = "百度搜索引擎!".getBytes("ISO8859-1");// 保存转码之后的数据out.write(b);// 关闭输出流out.close();}
}

运行结果如下:


因为编码不一致,所以在保存时出现了乱码。在 Java 的开发中,乱码是一个比较常见的问题,乱码的产生就有一个原因,即输出内容的编码与接收内容的编码不一致。

Java字符编码介绍相关推荐

  1. 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  2. 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

    http://blog.csdn.net/qinysong/article/details/1179489 这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记 ...

  3. Java字符编码知识简介

    1.基本信息 摘要:在Java应用程序特别是Web应用中,经常遇到字符的编码问题.为了防止出现乱码,首先需要了解字符编码的基本概念以及Java是如何处理字符编码的,这样就可以有目的地在输入/输出环节中 ...

  4. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  5. java字符编码方式总结

    java字符编码方式总结一.概要在JAVA应用程序特别是基于WEB的程序中,经常遇到字符的编码问题.为了防止出现乱码,首先需要了解JAVA是如何处理字符的,这样就可以有目的地在输入/输出环节中增加必要 ...

  6. Java——字符编码详细解释

    目录 一.引言 二.基础知识介绍 三.java中的编码问题 1.字符转内存 2.编码转换,内存转字符 四.总结 一.引言 字符编码一直是萦绕在心头的痛,精华其实在如何编码上,但是由于平台.编码错乱.各 ...

  7. 关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    出处: https://www.cnblogs.com/haimishasha/p/6117968.html 目录 1.1. ISO-8859-1 通常叫做Latin-1 1.2. GB2312/GB ...

  8. java字符编码详解_java字符编码详解

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

  9. java字符编码采用_JAVA字符编码三:Java应用中的编码问题

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

最新文章

  1. Glide和Govendor安装和使用
  2. android Adapter
  3. 在ASP.NET MVC中进行排序
  4. 采集文件到kafka
  5. 查看coo_matrix的shape
  6. Caffe常用层参数介绍
  7. python变量域名_想尝试使用python进行域名分析,可是没有接触过python,想请教请教。...
  8. Bash命令的学习笔记(legacy)
  9. a jquery 标签点击不跳转_jquery怎么让a标签不跳转?
  10. cad2022新功能介绍(autocad2022简体中文版)
  11. 快乐之道:游戏设计的黄金法则
  12. 数学建模——摘要写作
  13. PC版微信,公众号文章图片无法加载,解决方法
  14. 【shareX】自定义图片上传-基于tu.my最新版API
  15. 倒酒(拓展欧几里得)
  16. 项目开发——课程表查询APP
  17. ROS中执行roslaunch后,显示功能包不存在的解决方法
  18. 2013最新申请百度贴吧吧主的方法和规则
  19. 【SLAM学习】(二)相机原理
  20. Git之新建分支命令

热门文章

  1. mysql默认字符集和排序_MySQL字符集和排序规则
  2. 腾讯视频如何编辑自我介绍
  3. @JsonProperty注解解析
  4. 面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁
  5. 关于比较器Comparator排序时间的问题
  6. 抓包工具,知道手机app上面使用的接口是哪个
  7. 关于request.getRequestDispatcher()的两个方法
  8. 增量更新同步_OneDrive增量更新功能正式推出 仅同步文件更改部分降低网络占用...
  9. 不删除旧版本java_Linux 卸载旧版jdk 并安装新版jdk(转)
  10. mac os11以下安装Xcode