本文转载自:https://www.cnblogs.com/bimingcong/p/9185472.html   

首先 要明确指出一点:

编码方式是针对字符串转换之后的字节数组的,字符串并没有编码方式的概念,因为字符串不管是在什么编码页面下他只是一个对象,他只有字符的概念,不管页面编码方式是什么,他始终都是那几个字符    

众所周知,字符编码很多  像UTF-8、GBK、GB2312、ISO8859-1等等  其中GBK是兼容GB2312的重点是UTF-8编码下的中文占3个字节,GBK、GB2312编码下的中文占2个字节,当我们把一个字符串解析为UTF-8的字节时,ISO8859-1不存储中文

如果进行了业务处理,再转为GBK那么很容易就出现了乱码,很显然两种编码中文字节占用位数都不一样,

网上很多人说GBK转UTF-8的方法如下:

//以下代码是错误的
String str="双节棍爱好友h为太原";
byte[]tem=str.getBytes("GBK");
String result=new String(tem,"UTF-8");

我可以很负责的说这个是错误的  结果是乱码 这个我已经试过 是错误的

字符串就是个对象 你用什么编码去获取字节数组,那么你将字节数组重新还原字符串的时候就用对应的编码

//正确的方式
String name="金黄色的sfdf弗兰克的但safd撒酒疯";
byte[] gbkBytes=name.getBytes("GBK");
System.out.println(new String(gbkBytes,"GBK"));
byte[] utfBytes=name.getBytes("UTF-8");
System.out.println(new String(utfBytes,"UTF-8"));

如果要把字符串转换为UTF-8的字节数组  可以用以下两种方法:

byte[] retString=name.getBytes("UTF-8");

或者:

public static byte[] getUTF8Bytes(String name) {int n = name.length();byte[] utfBytes = new byte[3 * n];int k = 0;for (int i = 0; i < n; i++) {int m = name.charAt(i);if (m < 128 && m >= 0) {utfBytes[k++] = (byte) m;continue;}utfBytes[k++] = (byte) (0xe0 | (m >> 12));utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));utfBytes[k++] = (byte) (0x80 | (m & 0x3f));}if (k < utfBytes.length) {byte[] tmp = new byte[k];System.arraycopy(utfBytes, 0, tmp, 0, k);return tmp;}return utfBytes;
}

字符串转码中文乱码问题的进一步理解 UTF-8 GBK转码相关推荐

  1. python中文字符串编码_python中文乱码 字符串和编码

    Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了. Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节).现代操作系统和大 ...

  2. 二维码中文乱码问题解决

    二维码扫描出来的信息,有的中文是乱码,zxing没有解决这个问题,就比如百度搜二维码,搜到的百度百科里那个二维码,扫出来就有乱码. 以前看过一篇帖子,说中文乱码用GB2312转码 new String ...

  3. 谈谈对中文乱码,编码的理解 java python

    中文乱码问题研究结论 java python 字库表?编码字符集?字符编码? 编码,解码 数据读,写 中文乱码 分析一个java代码输出乱码的实例 这些问题一直困扰我很久,其实也不是什么大问题,每次遇 ...

  4. 关于MySQL 5.6 中文乱码的问题(尤其是windows的gbk编码)

    一般MySQL 数据库乱码由以下几种情况造成(按照顺序): 1. 创建数据库的时候没设置编码,解决办法: 就是在创建数据库的时候设置编码, 例如: CREATE DATABASE `mydb` CHA ...

  5. mysql c 中文字符串_MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法...

    开源数据库MySQL从来都是中小企业构建web应用的首选,特别是和PHP配合简直就是一 对黄金搭档,深受web开发人员的喜爱.但自从4.1以来MySQL加入了多字符集的支持,很多MySQL使用者发现中 ...

  6. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况(split、zip...)

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...

  7. eclipse下查看maven下载的源码中文乱码问题

    在项目中设置通过maven下载源代码和javadoc,直接通过eclipse浏览源代码时,发现中文为乱码.解决方法如下: 修改Eclipse中文本文件的默认编码:windows->Prefere ...

  8. 疯狂android源码中文乱码无gbk,我的Android进阶之旅------Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法...

    今天用CMD命令进行adb logcat时显示一堆的乱码,乱码如下: C:\Users\Administrator>adb logcat -s logcat --------- beginnin ...

  9. jfinal 源码中文乱码解决

    注:https://www.oschina.net/question/615481_2149294?sort=default

最新文章

  1. 超全面的JavaWeb笔记day02CSSJavaScript
  2. windows下安装cygwin及配置
  3. WINCE5.0和WINCE6.0的内存与系统架构
  4. java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?
  5. Android ToolBar的使用
  6. shell 用环境变量的值修改properties文件
  7. Idea打可执行jar包
  8. Adobe Experience Design是什么软件?xd mac版下载安装教程 XD 2021发布
  9. 王者-甄别同一板块强弱股的方法【真假美猴王】
  10. 批量删除Cookie(实用)
  11. note 2 运算符和表达式
  12. Julia: eval的一些用法
  13. 常见的HTTP状态码大全
  14. BizTalk Server : 提高 BizTalk 编程能力的 8 点技巧和窍门
  15. 360wifi驱动linux驱动安装,ubuntu安装360随身wifi驱动
  16. npm i和npm i --save没有区别
  17. 如何4步绘制出高水平的气泡图?
  18. 计算机实验室主要工作业绩范文,实验室工作总结
  19. 俞敏洪的一分钟励志演讲
  20. cf1239C (接热水)

热门文章

  1. LM358呼吸灯(亲测能用,效果很棒~)
  2. 实用工具推荐--GIF动图裁剪工具IIMG(免注册且免费)
  3. 论文阅读:Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv3+)
  4. 搜狗输入法语音转文字体验报告
  5. 概率论与数理统计学习笔记——第二章
  6. Spring Boot教程(三十五)使用MongoDB数据库(1)
  7. ultimatedefrag 6汉化版(磁盘碎片整理) v6.0.62.0
  8. 获取字符串第一个数字下标
  9. idea导入项目问题:No implementation for org.apache.maven.model.path.PathTranslator was bound.
  10. 视频教程-oracle数据库教程-Oracle