java字符编码详解

KLQ 2020-08-19 09:36:53 java常见问答 7872

对于java字符编码你都了解吗?下面的文章要给大家介绍的就是java字符编码,对这个方面不是很清楚的小伙伴一起来了解一下吧。

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

Java中常见编码说明:

UTF-UTF编码兼容了ISO8859-1编码,同时也能够用来表示所有的语言字符,但是,UTF编码是不定长编码,每一个字符的长度为1~6个字节不等,一般在中文网页中使用此编码,可以节省空间。

GBK/GB2312-中文的国标编码,用来表示汉字,属于双字节编码,GBK能够表示简体中文和繁体中文,GB2312只可以表示简体中文,GBK兼容GB2312。

ISO8859-1-属于单字节编码,最多只可以表示0~255的字符范围。

Unicode-是一种编码规范,是为了解决全球字符通用编码而设计的,UTF-8和UTF-16是这种规范的一种实现,这个编码不兼容ISO8859-1编码,Java内部采用此编码。

在程序当中,假如对字符编码没有做好处理,那么就会出现乱码的问题,这就好比,本机的默认编码是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[] = "C语言中文网,你好!".getBytes("ISO8859-1");
        // 保存转码之后的数据
        out.write(b);
        // 关闭输出流
        out.close();
    }
}

运行结果:

运行结果

可以发现的是,因为编码不一致,所以,在保存的时候就出现了乱码问题,在Java开发当中,乱码是一个很常见的问题,那么导致乱码出现的原因也就只有一个,那就是输出内容的编码和接收内容的编码不一致。

对于java字符编码你都清楚了吗?更多java入门内容,请继续关注奇Q工具网来进行了解吧。

推荐阅读:

java语言采用双字节的什么字符编码?java常见的几种编码方式

java正则表达式匹配字符串如何编写?

java基础算法、递归调用、字符串切割详解