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);

}

}

java中文getbytes为3_Java getBytes方法详解(字符集问题)相关推荐

  1. java读写json格式的文件方法详解.txt,并批量存储进redis

    捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...

  2. java 复合_Java复合语句的使用方法详解

    与 C 语言及其他语言相同, Java 语言的复合语句是以整个块区为单位的语句,所以又称为块语句.下面我们来看看有关复合语句的使用方法和实例. 复合语句由开括号"{"开始,闭括号& ...

  3. java+getactionmap_Struts2 使用OGNL遍历map方法详解

    一.Action中的代码:MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util ...

  4. java 方法体 out 参数_Java方法详解

    方法详解 1.方法的定义 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合,包含于类或对象中:在程序中被创建,在其它地方被引用 设计方法的原则:要遵守原子性,即一个 ...

  5. Java String API 常用的String方法详解

    标题 String类的特性 Java中String类的构造方法 String类的 intern() 注意还跟jdk有关 如何保证变量S指向的是字符串常量池中的数据呢? 关于String中 new St ...

  6. Python2写csv文件中文乱码问题及解决方法详解

    导读 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode,这篇文章给大家介绍Python2写csv文件中文乱码问题及解决方法,感兴趣的朋友跟随小编一起看看吧 ...

  7. Java去除字符串中空格的方法详解

    昨天写了一个关于Excel文件处理的脚本,在字符串匹配功能上总是出现多余不正确的匹配,debug调试之后,发现一个坑. 代码中字符串使用了replaceAll()方法,去除了所有空格(其中包括:首尾空 ...

  8. java post 发送_Java发送post方法详解

    总结一下java使用http发送post的方法: 1.post请求用于发送json 格式的参数: /** * post请求(用于请求json格式的参数) * * @param url 地址 * @pa ...

  9. Java语言求笛卡尔积,Java笛卡尔积算法原理与实现方法详解

    本文实例讲述了Java笛卡尔积算法原理与实现方法.分享给大家供大家参考,具体如下: 笛卡尔积算法的Java实现: (1)循环内,每次只有一列向下移一个单元格,就是CounterIndex指向的那列. ...

  10. java 操作 mongodb_Java操作MongoDB数据库方法详解

    Java与mongodb的连接 1. 连单台mongodb Mongo mg = new Mongo();//默认连本机127.0.0.1 端口为27017 Mongo mg = new Mongo( ...

最新文章

  1. failed to load external entity file:/C:/Users/fmm/.AndroidStudio3.4/config/options/updates.xml
  2. layui监听当前页_事件监听 · layui使用手册 · 看云
  3. 灰盒测试—数据库软件
  4. dom解析和sax解析的区别及优缺点
  5. MySQL高级最左前缀法则
  6. 《Debug Hacks》和调试技巧【转】
  7. sharedPreferences的用法
  8. linux exfat分区格式化,技术|如何在 Linux 上将 USB 盘格式化为 exFAT
  9. 011235813用java写出来_【JAVA】关于在运行后控制台显示的一些功能问题,请吧友帮我解答...
  10. 数据说大数据分析师吴女士观点:大数据是回暖的计算机行业中绩增速最高的子行业...
  11. iOS 滑动性能优化
  12. mysql备份与恢复的一些方法
  13. php 查询逗号分隔字符串,PHP-在逗号分隔的字符串mysql中查找值
  14. CSS 画一条横线/竖线
  15. 怎样将网络机顶盒usb调试模式打开
  16. 职场中警惕七种危险的同事
  17. zblog伪原创插件(2021最新版)
  18. 陈丹琦组最新力作:仅需dropout两次的对比学习框架
  19. 区块链和AI的比武,谁将登上黑科技这一宝座
  20. informix操作

热门文章

  1. 如何将硬盘系统完整拷贝到另一硬盘?
  2. 【Python入门教程】第35篇 查找元素的位置
  3. 基于CC2430和DS18B20的无线测温系统设计
  4. 八,分隔符,其他符号和数据的讲解
  5. 大数据-经典案例统计求和
  6. IDEA设置鼠标滚轮控制缩放大小
  7. android ios_如何在android中模拟ios preferredsbigtitles
  8. 【渝粤题库】广东开放大学物业管理基本制度与政策 形成性考核
  9. 未受信任的企业级开发者怎么设置
  10. VLAN_Trank使用