`
jspengxue
  • 浏览: 181003 次
  • 性别: Icon_minigender_1
  • 来自: 天堂和地狱的中间
社区版块
存档分类
最新评论

用java程序将GBK字符转成UTF-8编码格式

阅读更多
UTF-8 编码介绍
UTF-8 编码是一种被广泛应用的编码,这种编码致力于
把全球的语言纳入一个统一的编码

目前已经将几种亚洲语言纳入。UTF 代表 UCS Transformation Format.
UTF-8 采用变长度字节来表示字符,理论上最多可以到 6 个字节长度(一个字符六个字节)。
UTF-8 编码兼容了 ASC II(0-127), 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。
对于超过一个字节长度的字符,才用以下编码规范
左边第一个字节1的个数表示这个字符编码字节的位数,
例如两位字节字符编码样式为为:110xxxxx 10xxxxxx;
三位字节字符的编码样式为:1110xxxx 10xxxxxx 10xxxxxx.;
以此类推,六位字节字符的编码样式为:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。
xxx 的值由字符编码的二进制表示的位填入。只用最短的那个足够表达一个字符编码的多字节串。
例如:
Unicode 字符: 00 A9(版权符号) = 1010 1001,
UTF-8 编码为:11000010 10101001 = 0x C2 0xA9;
字符 22 60 (不等于符号) = 0010 0010 0110 0000,
UTF-8 编码为:11100010 10001001 10100000 = 0xE2 0x89 0xA0

package com.lang.string;


public class ConverFromGBKToUTF8 {
 public static void main(String[] args){
  
  try {
   
         ConverFromGBKToUTF8 convert = new ConverFromGBKToUTF8();
         byte [] fullByte = convert.gbk2utf8(chenese);
         String fullStr = new String(fullByte, "UTF-8");
         System.out.println("string from GBK to UTF-8 byte:  " + fullStr);


     } catch (Exception e) {
      e.printStackTrace();
     }
 }
 
 public byte[] gbk2utf8(String chenese){
  char c[] = chenese.toCharArray();
        byte [] fullByte =new byte[3*c.length];
        for(int i=0; i<c.length; i++){
         int m = (int)c[i];
         String word = Integer.toBinaryString(m);
//         System.out.println(word);
         
         StringBuffer sb = new StringBuffer();
         int len = 16 - word.length();
         //补零
         for(int j=0; j<len; j++){
          sb.append("0");
         }
         sb.append(word);
         sb.insert(0, "1110");
         sb.insert(8, "10");
         sb.insert(16, "10");
         
//         System.out.println(sb.toString());
         
         String s1 = sb.substring(0,8);          
         String s2 = sb.substring(8,16);          
         String s3 = sb.substring(16);
         
         byte b0 = Integer.valueOf(s1, 2).byteValue();
         byte b1 = Integer.valueOf(s2, 2).byteValue();
         byte b2 = Integer.valueOf(s3, 2).byteValue();
         byte[] bf = new byte[3];
         bf[0] = b0;
         fullByte[i*3] = bf[0];
         bf[1] = b1;
         fullByte[i*3+1] = bf[1];
         bf[2] = b2;
         fullByte[i*3+2] = bf[2];
         
        }
        return fullByte;
 }
}



UTF-8的编码原理和特性:


U+0000~U+007E 1 _ _ _ _ _ _ _ (7bits)

U+0080~U+07FF 1 1 0_ _ _ _ _ 1 0_ _ _ _ _ _ (11bits)

U+0800~U+FFFF 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ (16bits)

分享到:
评论
2 楼 m635674608 2012-12-18  
转换了吗。、怎么转换过后的长度还是gbk得长度了。str.getbyte[].length
1 楼 peter2009 2009-09-23  
public static String changeUncode(String str)
{
try {
byte[] buf = str.trim().getBytes("GBK");
str = new String(buf, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return str;
}

能给看看为什么我的这个方法写完了后

只要是中文字符串的长度是奇数的话最后一个没有转换呀

相关推荐

    Java工程编码格式由GBK转化成utf-8(编码格式互转)

    Java工程编码格式由GBK转化成utf-8(编码格式互转) https://ymjin.blog.csdn.net/article/details/118769530

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程.zip

    在处理包含中文字符的Java工程时,有时需要将GBK编码的工程转换为UTF-8编码,以确保在不同系统或工具中的正常显示和处理。本教程将详细讲解如何使用Java代码来完成这个转换过程。 首先,我们需要了解GBK和UTF-8编码...

    .java文件中GBK编码转UTF-8编码

    在eclispe的项目中,有存在项目字符集和工作空间字符集不匹配,该jar只能将项目文件中的.java结尾的文件转为utf8编码,并且源文件必须为gbk编码的,否则乱码

    批量将Java源代码文件的编码从GBK转为UTF-8

    老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8

    JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    - **Unicode到UTF-8**: 同样以"a 中文"为例,转换为UTF-8编码后,字节数组为`0x61 0xE4 0xB8 0xAD 0xE6 0x96 0x87`。 - **UTF-8到Unicode**: 反向转换后,结果依然是"a 中文"。 ##### 3. Unicode与ISO-8859-1 - **...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    例如,将一个UTF-8编码的字符串转换为Unicode编码的字符串: ```java String utf8Str = "中文"; String unicodeStr = new String(utf8Str.getBytes("UTF-8"), "UTF-8"); ``` #### 6. 示例分析 - **从GBK到ISO-...

    utf-8码转换器(转换成utf-8码)

    这个“utf-8码转换器”程序是用SWT(Standard Widget Toolkit)开发的,旨在帮助用户将非UTF-8编码的文本转换为UTF-8编码。在IT行业中,理解和使用UTF-8编码是非常基础且重要的知识。 1. **Unicode与UTF-8**: ...

    Eclipse项目的GBK编码转为UTF-8插件

    当开发者将一个原本使用GBK编码的Eclipse项目导入到Android Studio时,由于Android Studio默认使用的是UTF-8编码,可能会遇到编码不匹配的问题,导致代码显示乱码或编译错误。解决这个问题通常需要手动逐个文件转换...

    java 编码 UTF-8、ISO-8859-1、GBK

    例如,如果数据库是UTF-8,JSP是GBK,可以使用 `new String(rs.getBytes(1),"UTF-8")` 将数据库中的UTF-8字节流转换为GBK字符串。反之,如果JSP是UTF-8,数据库是GBK,需要先将GBK字符串转换为字节流,然后再次转换...

    utf-8 ansi 字符互转 工具

    例如“utf-8 ansi 字符互转 工具”就是这样一个软件,它能方便地帮助用户将文件或文本内容在UTF-8和ANSI编码之间进行转换。使用这类工具,用户通常只需选择输入文件、指定输出格式,然后点击转换按钮即可完成操作。 ...

    文件编码转换(utf8与gbk相互转换)

    UTF-8(Unicode Transformation Format - 8 bit)是一种变长编码,它使用1到4个字节来表示一个字符,其中英文字符通常只用1个字节,而大多数中文字符则用3个字节。UTF-8是Unicode标准的一部分,支持全球几乎所有的...

    如何将编码转换为UTF-8

    "UTF-8 编码转换详解" 1. UTF-8 编码的重要性:在 WEB 开发中,UTF-8 编码扮演着非常重要的角色,特别是在传递中文时,必须经过编码的动作,否则可能会出现乱码的情况。 2. 使用 URLEncoder.encode() 方法:在 ...

    简单的UTF-8与GBK之间相互转码工具

    本文将详细解析“简单的UTF-8与GBK之间相互转码工具”,并介绍相关的编码概念和实现方法。 首先,让我们理解编码的基础知识。字符编码是用来表示文本的规则,常见的有ASCII、GBK(GB2312的扩展)、UTF-8等。ASCII是...

    java文件编码GBK转utf8完美解决方案

    idea、Eclipse等项目导入.java文件中文乱码完美解决方案:文件夹下所有GBK编码的.java一键转为utf-8,操作方式:将GBK2UTF8.jar文件考到需要转码项目目录,在当前位置运行控制台,输入命令java -jar GBK2UTF8.jar,...

    批量转javaGBK编码文件到UTF-8

    本文将详细介绍如何在Eclipse环境下批量将GBK编码的Java源代码文件转换为UTF-8编码。 首先,我们需要理解GBK和UTF-8编码的区别。GBK是对GB2312的扩展,包含了更多的汉字,主要适用于简体中文环境。而UTF-8是一种变...

    GBK与UTF-8之间的转换

    正确的转换方法是,首先将GBK编码的字符串转换成UTF-8编码的字符串,然后将UTF-8编码的字符串转换成十六进制的UTF-8编码。下面是一个使用Java实现GBK与UTF-8之间的转换的示例代码: ```java public class ...

    GBK转UTF-8

    标题"GBK转UTF-8"指的是将使用GBK编码的文件或工程转换为使用UTF-8编码的过程。下面我们将深入探讨这两种编码以及转换工具的使用。 GBK编码,全称为“汉字内码扩展规范”,是中国大陆广泛使用的多字节字符集,它...

    eclispe GBK转UTF-8乱码解决

    然而,编码格式的问题时常困扰着开发者,尤其是当项目中存在GBK编码和UTF-8编码混用的情况,可能会导致乱码问题。本文将详细讨论如何在Eclipse中解决GBK转UTF-8乱码的问题,以及介绍一种插件工具来帮助统一编码格式...

    使用eclipse插件批量将Java源代码文件的编码从GBK(或其他编码)转为UTF-8

    当一个工程项目从GBK编码或其它非UTF-8编码格式需要转换为UTF-8时,开发者可能会遇到中英文乱码问题。Eclipse作为流行的Java集成开发环境,提供了便捷的插件来解决这类问题。 在Eclipse中进行批量转码通常涉及以下...

Global site tag (gtag.js) - Google Analytics