博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java编码
阅读量:6692 次
发布时间:2019-06-25

本文共 1478 字,大约阅读时间需要 4 分钟。

hot3.png

1、Unicode是一种编码规范,是为解决全球字符通用编码而设计的,而rUTF-8,UTF-16等是这种规范的一种实现。

2、java内部采用Unicode编码规范,也就是支持多语言的,具体采用的UTF-16编码方式。

3、不管程序过程中用到了gbk,iso8859-1等格式,在存储与传递的过程中实际传递的都是Unicode编码的数据,要想接收到的值不出现乱码,就要保证传过去的时候用的是A编码,接收的时候也用A编码来转换接收。

4、如果双方的file.encoding确保都相同,那就省事了,都默认转了,但往往在不同项目交互时很多时候是不一致的,这个时候是必须要进行编码转换的。

5、无论如论转换,java程序的数据都是要先和Unicode做转换,这样也就是能处理多语言字符集的原因了。底层保持了一致,只要在传值和接值的时候也一致就肯定不会出现乱码了。

6、在看懂以上5点之后,请参考demo示例如下:

//Demo.java   该java文件编码方式为UTF-8

package test;

public class Demo {

public static void main(String args[])throws Exception {

String str = "中文字符";

System.out.println("original string---" + str);// 会正常输出原始串

/**

* str.getBytes();//如果括号中不写charset,则采用的是Sytem.getProperty("file.encoding"),即当前文件的编码方式,

* 很多人写的是系统的默认编码,通过代码测试并非如此,实际得到的是文件的编码方式*

* str.getBytes("charset");//指定charset,即将底层存储的Unicode码解析为charset编码格式的字节数组方式

* String new_str=new String(str.getBytes("utf-8"),"gbk"));

* //将已经解析出来的字节数据转化为gbk编码格式的字符串,在内存中即为gbk格式的字节数组转为Unicode去交互传递

*/

String new_str = new String(str.getBytes("utf-8"), "gbk");

    /**

     * 此时的输出是乱码,在UTF-8的file.encoding下输出gbk格式的数据肯定是乱码,但是new_str的确是gbk编码式的

     * 此时的乱码源于encoding不符,但gbk格式的new_str本身数据并没有问题,通过下面的转换也可以看得出来

     */

System.out.println("new string----" + new_str);

String final_str = new String(new_str.getBytes("gbk"), "utf-8");//此处的含意与最上边的注释是一致的参数含意

/**

*输出是正常的,此时将gbk编码格式的new_str字符串,用gbk这个charset去解析它,然后用utf-8再转码一次,

    因为new_str确实是gbk格式的,才能经过utf-8编码得到正常的数据显示。

*/

System.out.println("final string---"+final_str);

}

}

 

转载于:https://my.oschina.net/rock912/blog/542811

你可能感兴趣的文章
15款经典图表软件推荐
查看>>
bugzilla安装笔记
查看>>
记录linux设置定时执行python脚本以及输出到指定文件
查看>>
我的友情链接
查看>>
Hadoop 2.0(YARN/HDFS)学习资料汇总
查看>>
15.汉字的繁简转换 C#
查看>>
Confluence 6 如何考虑设置一个空间的主页
查看>>
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
AndroidTV 网络机顶盒 Wi-Fi设置
查看>>
[精讲-5]BitLocker
查看>>
awk常用注意事项--awk如何引用外部变量
查看>>
mysql5.7制作rpm包spec文件
查看>>
mysq基础笔记(sql语句)
查看>>
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>
PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释
查看>>