通过以下方法将GBK字符转成UTF-8编码格式的byte【】数组

  1. package test;
  2. import java.io.UnsupportedEncodingException;
  3. public class TestEncoder {
  4. /**
  5. * @param args
  6. */
  7. public static void main(String[] args) throws Exception {
  8. String gbk = "iteye问答频道编码转换问题";
  9. String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1");
  10. System.out.println(iso);
  11. String utf8 = new String(iso.getBytes("ISO-8859-1"),"UTF-8");
  12. System.out.println(utf8);
  13. System.out.println(getUTF8StringFromGBKString(gbk));
  14. }
  15. public static String getUTF8StringFromGBKString(String gbkStr) {
  16. try {
  17. return new String(getUTF8BytesFromGBKString(gbkStr), "UTF-8");
  18. } catch (UnsupportedEncodingException e) {
  19. throw new InternalError();
  20. }
  21. }
  22. public static byte[] getUTF8BytesFromGBKString(String gbkStr) {
  23. int n = gbkStr.length();
  24. byte[] utfBytes = new byte[3 * n];
  25. int k = 0;
  26. for (int i = 0; i < n; i++) {
  27. int m = gbkStr.charAt(i);
  28. if (m < 128 && m >= 0) {
  29. utfBytes[k++] = (byte) m;
  30. continue;
  31. }
  32. utfBytes[k++] = (byte) (0xe0 | (m >> 12));
  33. utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));
  34. utfBytes[k++] = (byte) (0x80 | (m & 0x3f));
  35. }
  36. if (k < utfBytes.length) {
  37. byte[] tmp = new byte[k];
  38. System.arraycopy(utfBytes, 0, tmp, 0, k);
  39. return tmp;
  40. }
  41. return utfBytes;
  42. }
  43. }

解决GBK字符转UTF-8乱码问题的更多相关文章

  1. 理解并解决GBK转UTF-8奇数中文乱码(转)

    最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK编码,对方公司是UTF-8编码.因此,我需要将GBK编码数据转换成UTF-8编码数据,这样对方网站才不会乱码.最简单的方法是将HttpCl ...

  2. python爬虫解决gbk乱码问题

    今天尝试了下爬虫,爬取一本小说,忘语的凡人修仙仙界篇,当然这样不好,大家要支持正版. 爬取过程中是老套路,先获取网页源代码 # -*- coding:UTF-8 -*- from bs4 import ...

  3. 22-python爬虫解决gbk乱码问题

    转载自: python爬虫解决gbk乱码问题   今天尝试了下爬虫,爬取一本小说,忘语的凡人修仙仙界篇,当然这样不好,大家要支持正版. 爬取过程中是老套路,先获取网页源代码 # -*- coding: ...

  4. Java_Web学习笔记_过滤器应用案例(解决全站字符乱码)

    解决全站字符乱码(POST和GET中文编码问题) servlet: l  POST:request.setCharacterEncoding(“utf-8”); l  GET: String user ...

  5. 解决在Ubuntu终端下使用cURL获取GBK格式的页面出现乱码问题

    问题描述 在Ubuntu下使用终端使用cURL去拿一个GBK的页面,发现返回来的内容里面中文都是乱码 解决方法 通过iconv来处理乱码拿到的内容,进行转码,示例如下: $curl http://ww ...

  6. 解决Fiddler查看Post参数中文乱码的问题

    解决Fiddler查看Post参数中文乱码的问题 解决方法: 1.win+R 2.打开注册表编辑器:输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Micro ...

  7. 解决URL地址中的中文乱码问题的办法

    解决URL地址中的中文乱码问题的办法 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生 ...

  8. 解决ArcGIS10.3属性表中文乱码问题

    问题描述:在10.3刚出为不久,就发现有时属性表会出现中文乱码的问题. 解决方法:在Cmd命令行中输入以下命令: reg add HKEY_CURRENT_USER\Software\ESRI\Des ...

  9. 解决Ubuntu和Windows的文件乱码问题(转载)

    解决Ubuntu和Windows的文件乱码问题(debian也通用) 1.转换文件内容编码   Windows下天生的纯文本文件,其中文编码为GBK,在Ubuntu下显示为乱码,可以使用iconv命令 ...

随机推荐

  1. [Java Basics] Collection

    除了Java collection class/interface外,方便的有Google guava的utility class: Lists/Sets/Maps/Queues, 用它们可以方便地创 ...

  2. linux命令:locate

    1.命令介绍: locate用来查找文件,它是在系统的数据库中查找,所以速度非常快. 2.命令格式: locate [选项] 模式         ---这里的模式是指正则表达式 3.命令参数: -e ...

  3. Python UDP broadcast PermissionError: [Errno 13] Permission denied

    /********************************************************************** * Python UDP broadcast Permi ...

  4. REST概念和应用 - TODO

    Motivation Sometimes I fell like giving up, then I remember I have a lot of motherfuckers to prove w ...

  5. spring-websocket的搭建

    Apach Tomcat 8.0.3+MyEclipse+maven+JDK1.7 spring4.0以后加入了对websocket技术的支持,撸主目前的项目用的是SSM(springMVC+spri ...

  6. Linux文件操作 笔记

    fstat stat lstat 原型 #include <unistd.h> #include <sys/stat.h> #include <sys/types.h&g ...

  7. linux下压缩与解压(zip、unzip、tar)详解

    linux下压缩与解压(zip.unzip.tar)详解 2012-05-09 13:58:39| 分类: linux | 标签:linux zip unzip tar linux命令详解 |举报|字 ...

  8. 【我所理解的Cocos2d-x】第六章 精灵Sprite 读书笔记

    简介: 精灵是2D游戏里最重要的元素.游戏场景中大部分可见的元素都直接或间接地与精灵相关. 在Cococs2d-xz中,精灵使用Sprite表示,它将一张纹理的一部分或者全部的矩形区域绘制在屏幕上. ...

  9. SocketTcpServer

    自定义SocketTcpServer,虽然现在有很多这样的组件,但是有时候还是需要把它集成在你的框架或者产品中,不需要特别强大的功能,根据需求定制.最基本的一个问题是判断数据包的结束,没有像super ...

  10. bzoj2518: [Shoi2010]滚动的正四面体

    Description 正四面体总共有4个面,每个面都是一个正三角形.现在把它的一个面标记上字母A,如图 3中所示,A标记在底面上: 于是,这个正四面体的滚动过程就可以用一个只包含“L”“R”“B”的 ...