unicode是一种“编码”,所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成一个很大的对应表格

GBK、UTF-8是一种“编码格式”,是用来序列化或存储1中提到的那个“编号(数字)”的一种“格式”;GBK和UTF-8都是用来序列化或存储unicode编码的数据的,但是分别是2种不同的格式; 他们俩除了格式不一样之外,他们所关心的unicode编码范围也不一样,utf-8考虑了很多种不同国家的字符,涵盖整个unicode码表,所以其存储一个字符的编码的时候,使用的字节长度也从1字节到4字节不等;而GBK只考虑中文——在unicode中的一小部分——的字符,的编码,所以它算好了只要2个字节就能涵盖到绝大多数常用中文(2个字节能表示6w多种字符),所以它存储一个字符的时候,所用的字节长度是固定的;

上述2个概念不懂的请马上google,下面不再赘述;我下面说说这个问题本身...的问题在哪里

首先java的string使用的编码是unicode,但是,当string存在于内存中时(也就是当程序运行时、你在代码中用string类型的引用对它进行操作时、也就是string没有被存在文件中且也没有在网络中传输(序列化)时),是“只有编码而没有编码格式的”,所以java程序中的任何String对象,说它是gbk还是utf-8都是错的,gbk和utf-8是编码格式而不是编码,String在内存中不需要“编码格式”(记住编码格式是在存文件或序列化的时候使用的), 它只是一个unicode的字符串而已

所以java里面String是不带编码格式的,而String.toByteArray(charsetName)得到的byteArray是带编码格式的,格式就是你传入的'charsetName',我们不妨把toByteArray的这个过程叫做“编码”;另外,new String(byte[], charsetName)是把一个byte数组(带编码格式)以charsetName指定的编码格式翻译为一个不带编码格式的String对象,我们不妨把这个过程叫“解码”

那么根据我揣测提问者的意图,可能有2种问法是他真正想问的:

第一,如何把一个被错误地当作是gbk格式存储的utf-8格式的文件里面读出来的一段乱码字符串还原回去(也就是说本来二进制数据是utf-8的,你用gbk来解码它,得到的字符串是乱码,现在想要还原回去)

第二种,如何把一个gbk文件转化为utf-8文件

如果是第一种意图那就:

java string 编码_java中GBK编码格式转成UTF8,用一段方法实现怎么做?相关推荐

  1. java bufferedinputstream 编码_java中关于编码的问题(字符转换流及字符缓冲流 )

    上次我们使用的是字节流,还有一种方式就是字符流,上次说过如何分辨使用哪种流,如果记事本可以读懂则使用字符流,否则使用字节流.使用字符流就需要牵扯到编码的问题,下面给出一种转化流的格式. OutputS ...

  2. java string类型_java中String类型

    String类型是字符串类型..字符串一旦创建不可以在改变."abc"字符串对象一旦创建,不可以再改成"abcd" 提升字符串的访问效率:在程序中使用了&quo ...

  3. double java 精度丢失_java中double和float精度丢失问题及解决方法

    在讨论两位double数0.2和0.3相加时,毫无疑问他们相加的结果是0.5.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void te ...

  4. java简拼_java中把汉字转换成简拼的实现代码

    public static void main(String[] args) { String str = null; str = "顾亮"; System.out.println ...

  5. java http编码_JAVA中的http请求处理编码URLEncode

    JAVA中的http请求接收数据处理编码问题URLEncode编码和URLDecoder解码运用方法 近期在搞直接调用接口,碰到一个URLEncode编码问题,Json中含有URLEncode编码过的 ...

  6. java string 空间_Java中,String str = “Runoob”;这个语句中str和“Runoob”都占空间吗?分别占多大?...

    题目描述 1,"Runoob"这个字面值是在方法区的常量池中,它占多大空间? 2,str是存在栈区吗?它又占多大空间呢?是占一个 char型大小的空间吗? 3,str是存放的&qu ...

  7. java 字节编码_java中字符与字节的编码关系

    一个英文字母字符存储需要1个字节.在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节. 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节.在 ...

  8. java string 字节_java中string究竟占多少字节

    以前学java基础的时候考虑过string占多少字节,百度后有人说一个汉字占两个字节,所以一个string的字节数是可变的,遇到一个汉字+2,遇到一个字母+1.笔者对此结论严重怀疑,一个string在 ...

  9. java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...

    在我们面试或者考试过程中经常会考到八种基本数据类型以及它们的封装类,那么有哪八种基本数据类型呢?它们的封装类又是什么呢? 首先,八种基本数据类型分别是:int.short.float.double.l ...

最新文章

  1. Unity的NGUI插件篇——入场效果
  2. 服务器装系统用哪个好,服务器系统重装用哪个系统
  3. VMware在RSA大会上的新发布
  4. 每个人都有迷茫的时候,不知道接下来人生该怎么走?
  5. css的font修改颜色,css的font字体颜色如何设置
  6. android 左滑跳转_使用ViewPager实现左右循环滑动及滑动跳转
  7. 苹果:我们从未向中国政府透露源代码
  8. SAP GUI 760 下载
  9. 【口令破解】远程口令破解和本地口令破解(crunch 字典工具和hydra工具)
  10. IT营大地老师2017最新node.js视频教程avi版本(课件+源码+视频)
  11. 【中间件技术】软件构件与中间件技术学习与实践系列文章汇总目录(持续更新中)
  12. 软件测试基础知识+面试
  13. Python-科赫雪花(科克曲线)
  14. 不确定性原理的前世今生(转载)
  15. Java main是什么_java中的public static void main是什么意思
  16. .net mvc ef 视图未定义主键问题
  17. 2020-2021下学期 奖状的清单
  18. 13种最为荒谬的编程语言
  19. 今天给大家分享用scratch制作最难通关管道小游戏!
  20. qt模拟键盘的三种实现方式(思路+demo)

热门文章

  1. 令克软件格隆汇——携手推进合作,共创金融IT持续发展
  2. 【ubuntu】在ubuntu上安装QT
  3. 数据规范化(标准化)
  4. Error creating bean with name ‘ribbonLoadBalancingHttpClient‘
  5. 二十一世纪最性感的职业:数据科学家
  6. 应用程序无法正常启动 VS
  7. 基于制导武器的分布式半实物仿真系统ETest研究
  8. 国庆节去哪浪?让 Python 帮你分析分析
  9. c++常见面试问题总结
  10. 关于LTE终端的所谓的五模、七模、十频、十一频