文档章节

java中String字符串按照不同编码格式获取后乱码的问题

writeademo
 writeademo
发布于 2017/03/13 13:50
字数 320
阅读 74
收藏 1

 

java中String字符串按照不同编码格式获取后乱码的问题

 

 

public byte[] getBytes(String charsetName)
使用指定的字符集将此String编码为byte序列,结果存在一个byte数组中
public String(byte[] bytes, String charsetName)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。

网络传输中,信息都是以字节序列的方式传输的。所以,发送方的String要按照某种编码方式(如UTF-8,GBK)编码为字节序列,在网络中传输后,接收方取得这个字节序列,按照相同的编码方式将字节序列解码为String。

请看下面的代码片段:

String name = "张三";

byte[] b1 = name.getBytes("UTF-8");
String name1 = new String(b1, "UTF-8"); //编码解码相同,正常显示
System.out.println(name1);
String name2 = new String(b1, "GBK"); //编码解码不同,乱码
System.out.println(name2);

byte[] b2 = name.getBytes("GBK");
String name3 = new String(b2, "GBK"); //编码解码相同,正常显示
System.out.println(name3);
String name4 = new String(b2, "UTF-8"); //编码解码不同,乱码
System.out.println(name4);


研究完编码收获会不小的,对以后理解Java的输入输出(尤其是网络通信和文件读写)都很有帮助。

© 著作权归作者所有

writeademo
粉丝 27
博文 681
码字总数 256388
作品 0
东城
私信 提问
加载中

评论(1)

qwfys
qwfys
的确,计算机只认识二进制字节流,字符、字符串,是人为的一种编码方式,字符集是编码的一种方式而已,想要不出现字符串乱码,那就要头脑清醒,在将特定字符集字符串转换为二制后,只要用对应的字符集再转回来就可以了。
Java Web中的中文编码问题分析

一、为什么需要编码 在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语、日语要表示的符号太多,无法单纯用一个字节来完全表示,...

老韭菜
2018/08/12
13
0
深入分析Java中的中文编码问题

编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中...

lvzjane
2012/11/29
453
2
深入分析 Java 中的中文编码问题

编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中...

IBMdW
2011/07/07
1K
20
Java 正确的做字符串编码转换

字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码文件是GBK编码, 操作系统(windows)默认的环境编码为GBK,那么编译时, JVM将 按...

月下狼
2013/11/19
14.2K
0
java unicode转GBK

我们经常会遇到编码问题。Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为JAVA里面一个...

圣洁之子
2015/03/02
578
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
35分钟前
5
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
52分钟前
94
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
今天
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部