开发者学堂课程【Java 高级编程:字符编码】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/320
字符编码
内容简介:
一、 列出本机属性
二、 编写程序
三、 强制性设置编码
一、 列出本机属性
在计算机的世界里面,只认 0、1 的数据,如果要想描述一些文字的编码,就需要对这些二进制的数据进行组合,所以才有了现在可以看见的中文。
但是在进行编码的时候,如果要想正确解释出内容,则一定需要有解码,所以编码和解码肯定要采用同一标准,如果不统一的时候,就会出现乱码。
所以编码的统一是解决出现乱码的唯一途径。那么在实际的开发之中,对于常用的编码,有如下几种:
1、GBK/GB2312 国标编码,可以描述中文信息,其中 GB2312 只描述简体中文,而 GBK 包含有简体中文与繁体中文。
2、ISO8859_1 国际通用编码,可以描述所有文字信息,但如果处理不当,也会出现乱码。
3、Unicode 编码采用 16 进制的方式存储,可以描述所有的文字信息。其有一个最大的缺点就是大。
4、UTF 编码象形文字部分使用16进制编码,而普通的字母采用的是 ISO8859-1 编码,它的优势在于适合于快速的传输,节约带宽,这也就成为了在开发之中首选的编码。存在 UTF16 和 UTF_8,其中主要使用 utf-8 编码。
如果要想知道当前系统中支持的编码规则,则可以使用如下代码列出全部的本机属性。
范例:列出本机属性
package cn.mldn.demo;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception
System.getProperties().list(System.out);
}
}
以上信息都属于本机的操作属性,其中包括文件路径分割符、文件默认编码方式,也就是说如果现在什么都不设置,则采用的编码就是 Utf-8。
二、 编写程序
范例:编写程序
package cn.mldn.demo;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
import java.io.FileOutputStream;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
OutputStream output = new FileOutputStream("D:" + File.separato
output.write(”中华人民共和国万y"RetB)~~
此时没有设置编码,代码运行结果还是正常编码。此时为默认的处理操作,所以可以正常进行显示,不设置编码的时候,就将采用默认的编码方式进行。
三.强制性设置编码
范例:强制性设置编码
import java.io.File;
import java.io.FileoutputStream;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args)throws Exception {
OutputStream output = new FileOutputStream("D:" + File.separatoroutput.write(“中华人民共和国万岁".getBytes("UTF-s"));
Ioutput.close();
代码仍然是正常执行。因为强制设置的编码也还是默认编码,但如果设置其他编码,就将会出现乱码。
getByte(“ISO8859-1”));
项目中出现的乱码问题,就是编码和解码标准不统一,而最好的解决乱码的方式,所有的编码都用 Utf-8。