java跟python类似的做法,在java中字符串的编码是java修改过的一种Unicode编码,所以看到java中的字符串,心理要默念这个东西是java修改过的一种Unicode编码的编码。

packagestring;importjava.nio.charset.Charset;public classUTF82GBK {public static void main(String[] args) throwsException {//系统的默认编码是GBK

System.out.println("Default Charset=" +Charset.defaultCharset());

String t= "hfjkds中国中国中国中国中国中国中国中国中国中国中国中国中国中国中国中国中国中国中国中国hfsdkj fjldsajflkdsjaflkdsjalf sfdsfadas";//思路:先转为Unicode,然后转为GBK

String utf8 = new String(t.getBytes( "UTF-8"));//等同于://String utf8 = new String(t.getBytes( "UTF-8"),Charset.defaultCharset());

System.out.println(utf8);

String unicode= new String(utf8.getBytes(),"UTF-8");//等同于://String unicode = new String(utf8.getBytes(Charset.defaultCharset()),"UTF-8");

System.out.println(unicode);

String gbk= new String(unicode.getBytes("GBK"));//等同于://String gbk = new String(unicode.getBytes("GBK"),Charset.defaultCharset());

System.out.println(gbk);

}

}

packagecom.mkyong;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;public classUTF8ToGBK {public static void main(String[] args) throwsException {

File fileDir= new File("/home/user/Desktop/Unsaved Document 1");

BufferedReader in= new BufferedReader(newInputStreamReader(new FileInputStream(fileDir), "UTF-8"));

String str;while ((str = in.readLine()) != null) {

System.out.println(str);//java内部只有unicode编码 所以str是unicode编码

String str2 = new String(str.getBytes("GBK"), "GBK");//str.getBytes("GBK")是gbk编码,但是str2是unicode编码

System.out.println(str2);

}

in.close();

}

}

问题的关键是new String(xxx.getBytes("gbk"), "gbk")这句话是什么意思,xxx.getBytes("gbk")得到的数组编码是GBK,因此必须必须告诉java:我传给你的数组是gbk编码的,你在转换成你内部的编码的时候记得要进行一些处理,new String(xxx.getBytes("gbk"), "gbk"),这句话第二个“gbk”是告诉java传递给它的是gbk编码的字符串。

String fullStr = new String(str.getBytes("UTF-8"), "UTF-8");//正常

String fullStr2 = new String(str.getBytes("UTF-8"), "GBK");//不正常,java内置的编码->utf8 被当成GBK编码转换成java内置的编码

看一下jdk文档是怎么说的

public String(byte[] bytes,

Charset charset)

Constructs a new String by decoding the specified array of bytes using the specified charset.

那现在的问题就是,我怎么在String中持有GBK编码的东西呢?

String str3 = new String(str.getBytes("GBK"),"ISO-8859-1");

System.out.println(new String(str3.getBytes("ISO-8859-1"),"GBK"));

java utf-8 gbk_Java 字符转码之UTF-8转为GBK/GB2312相关推荐

  1. web开发中的JAVA字符转码

    2019独角兽企业重金招聘Python工程师标准>>> 二.基本概念 2.1 JAVA中字符的表达 JAVA中有char.byte.String这几个概念. char 指的是一个UN ...

  2. java 德文转码_web开发中的JAVA字符转码

    二.基本概念 2.1 JAVA中字符的表达 JAVA中有char.byte.String这几个概念. char 指的是一个UNICODE字符,为16位的整数.java抓取网页保存的乱码问题解决 byt ...

  3. java中0x0f对应的字符是什么_常见字符的ASCII码,java中如何获取字符的ASCII码

    一.常见字符的ASCII码 ASCII 码使用指定的7 位或8 位的二进制数组合来表示128 或256 种可能的字符. 标准ASCII 码也叫基础ASCII码,使用7 位二进制数(最高的1位二进制为0 ...

  4. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  5. String类型的字符长度(码点/代码单元的区别)

    查看String的源码可以发现它以一个char类型的数组保存字符串的,而String.length()方法返回的也是这个char数组的长度. 那么,这个长度和"字符"长度有什么关系 ...

  6. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*;public class Index{public stati ...

  7. 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

    http://blog.csdn.net/qinysong/article/details/1179489 这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记 ...

  8. 【转】文本文件和二进制文件区别及java中字节流和字符流归纳

    首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的形式存放于存储介质中,他们的区别只是逻辑上的区别,这两种方式只是在编码层次上有差别.文本文件是基于字符编码的文件,常见的编码有ASCII编 ...

  9. java小数换成字符实现加法_第一、二次笔记总结

    1:常用的DOS命令 A:盘符切换 盘符: 然后回车 B:列出当前目录下的文件以及文件夹 dir 然后回车 C:创建目录(文件夹) 了解 md 目录名称 D:删除目录   了解 rd 目录名称 E:进 ...

最新文章

  1. 学习Spring中遇到关于BeanFactory及测试类的问题
  2. python下requests的安装、测试、入门资料、官方资料
  3. Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)
  4. TensorFlow:Windows下使用TensorFlow-Python版本
  5. P3768 简单的数学题(杜教筛)
  6. 位运算实现加减乘除四则运算(Java)
  7. Java已死?一眼就能看懂的Java自学手册,挑战大厂重燃激情!
  8. c语言中各种符号的意思。
  9. 模型运行速度FPS测试以及参数Parameter计算代码
  10. 中企动力助天正生物争夺破伤风抗毒素全球话语权
  11. 正常打游戏声音分贝测试软件,你们ps4玩游戏的时候噪音是多少分贝啊,我下了个测量噪音的软件,我的......
  12. 下面哪些是python语言的特点_Python语言的特点有哪些?九大特点介绍!
  13. 『精华』技术大牛养成指南,一篇不鸡汤的成功学实践
  14. 一种留存分析的方案:Cohort Analysis
  15. 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)
  16. Android AT command
  17. 微信上的文件怎样用计算机打出来,微信上的文件传到电脑上怎么打印出来
  18. THUWC2019 游记
  19. markdown语法最全汇总
  20. 开发的阅读文档来源灵感

热门文章

  1. python apscheduler 脚本 动态_用apscheduler写python定时脚本
  2. android点击灰色背景图片,android button按键失去焦点和点击后改变背景图片
  3. python选取tensor某一维_Pytorch的Tensor操作(1)
  4. MongoClient类参考文档
  5. ClassCastException:AdaptiveIconDrawable cannot be cast to BitmapDrawable
  6. 计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...
  7. Linux 禁用msi模式,通过禁用MSI模式解决Win10磁盘占用100%的方法
  8. 不显示表头_技术干货 | 基于数模混合型SoC实现的两线制高精度无源表头方案
  9. matlab项目实例教程,matlab简明实例教程.doc
  10. pc模式 华为mate30_号称“重构想象”的华为Mate30系列,到底有多颠覆?一睹为快...