Java中为什么有时候通过指定编码集无法解决乱码
@TOC
Java中为什么有时候通过指定编码集无法解决乱码
当我们编程的时候都遇到过出现乱码的情况,这通常是使用了不匹配的编码表导致的,这是我们可以用指定的编码表的方式解决乱码问题如下面 的代码
String str = "你";byte[] ch_gbk = str.getBytes("GBK");System.out.println(Arrays.toString(ch_gbk));// [-60, -29]// 这里我们模拟用错编码表导致乱码String srt_2 = new String(ch_gbk, "ISO8859-1");System.out.println(srt_2);// 这时候我们可以同指定编码解码集的方式解码再编码的方式解决乱码byte[] byte_gbk = srt_2.getBytes("ISO8859-1");System.out.println(new String(byte_gbk, "GBK"));System.out.println(Arrays.toString(byte_gbk));// [-60, -29]
但是有时候我们同过这种方式依然无法解决乱码,。例如同样的代码当我用utg-8编解码的时候,依然是乱码,仔细看代码你就会发现,"你"用字节表示是[-60, -29],当我用utf-8编解码后他的字节形式变成了[-17, -65, -67, -17, -65, -67],也就是说当我们utf-8查表发现不匹配时会返回[-17, -65, -67, -17, -65, -67]替代了我们原来"你“的字节[-60, -29],这样我在通过指定编码表当然就解决不了乱码
String str = "你";byte[] ch_gbk = str.getBytes("GBK");System.out.println(Arrays.toString(ch_gbk));// [-60, -29]// 这里我们模拟用错编码表导致乱码String srt_2 = new String(ch_gbk, "utf-8");System.out.println(srt_2);// 这时候我们可以同指定编码解码集的方式解码再编码的方式解决乱码byte[] byte_gbk = srt_2.getBytes("utf-8");System.out.println(new String(byte_gbk, "GBK"));System.out.println(Arrays.toString(byte_gbk));// [-17, -65, -67, -17, -65, -67]
Java中为什么有时候通过指定编码集无法解决乱码相关推荐
- Android/Java 获取一个byte[]的真实编码,用于解决乱码问题
2019独角兽企业重金招聘Python工程师标准>>> 来源地址:https://blog.csdn.net/qq_31384551/article/details/81627840 ...
- 【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )
文章目录 前言 一.Groovy 动态语言 二.Groovy 中的变量自动类型推断及动态调用 三.Java 中必须为变量指定其类型 前言 Groovy 是动态语言 , Java 是静态语言 ; 一.G ...
- Java中常见的CMS GC问题分析与解决(一)
Java中常见的CMS GC问题分析与解决(一) 目前,互联网上 Java 的 GC 资料要么是主要讲解理论,要么就是针对单一场景的 GC 问题进行了剖析,对整个体系总结的资料少之又少.前车之鉴,后事 ...
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法
Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 参考文章: (1)Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 (2)https://www.cnblog ...
- Java中如何正确使用字体编码
Java支持UTF-8.ISO-8859-1.GBK等各种字体编码,可笔者发现Java中字体编码的问题仍难倒了不少程序员,网上虽然也有不少关于在Java中如何正确显示中文的文章,但都不够全面,笔者特意 ...
- Java中char类型与Unicode编码
char是字符型,在Java中规定为2个字节.同样地,目前全球通用的字符集编码Unicode码,最常见的也是用2个字节表示字符. 其实,Java中可以通过字符型和整型的相互强制类型转换,实现由字符得出 ...
- Java中从字符串删除指定字符
public class RemoveChar {public static void main(String[] args) throws IOException {Scanner sc=new S ...
- 中文乱码在java中URLEncoder.encode方法要调用两次解决
2019独角兽企业重金招聘Python工程师标准>>> 因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParamete ...
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
今天遇到一个问题就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 现解决办法如下: 1 ...
最新文章
- 集成学习、Bagging算法、Bagging+Pasting、随机森林、极端随机树集成(Extra-trees)、特征重要度、包外评估
- mysql启动命令 windows_Windows下Nginx的启动停止等基本操作命令详解
- c 解析java byte,深入解析Java编程中面向字节流的一些应用
- Flex读取xml文件
- linux 内存查看_Linux终端查看最消耗CPU内存的进程
- 控件时出现“未能实例化控件******,VS2008 中无法使用ACTIVEX控件的解决
- ffmpeg yuv数据存储方式_一文理解 YUV
- matlab 二维低通滤波器,matlab二维低通滤波器
- Python 网络爬虫与数据采集(一)
- 短视频去水印解析二次运用--全网短视频解析去水印软件
- java毕设项目开源了,springboot+vue的应用级erp系统
- 天了噜,原来有效的复盘要这样做,微妙
- 直播预告:Envoy Core Maintainer 跨洋解读 Envoy 技术(中文)
- 30人围成一圈的小游戏。c语言
- ApacheCN Python 译文集(二)20211110 更新
- 风速传感器的安装要求是什么?安装要注意这三点
- java 解密pdf_Java 加密和解密 PDF
- 使用友盟社会化分享IOS版SDK分享纯图片到微信
- 微信(电脑版)多开教程
- vim增加php自动补全