`

GBK与UTF-8 字符串互转

    博客分类:
  • java
 
阅读更多

package com.cloud.tools;

 

import java.io.UnsupportedEncodingException;

 

/**

 * utf8 to gbk gbk to utf8

 * 

 * @author dell

 *

 */

public class Utf8ToGbk {

 

//utf-8 -> gbk

public static String utfToGbk(final String str) {

 

String utf8 = "";

String gbk = "";

try {

utf8 = new String(str.getBytes("UTF-8"));

//转为为unicode 字符串

String unicode = new String(utf8.getBytes(), "UTF-8");

gbk = new String(unicode.getBytes("GBK"));

 

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

 

return gbk;

 

}

 

//gbk -> utf-8

public static String gbkToUtf8(final String str) {

 

String utf8 = "";

try {

utf8 = new String(getUTF8BytesFromGBKString(str),"UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

 

return utf8;

 

}

 

 

public static byte[] getUTF8BytesFromGBKString(String gbkStr) {  

        int n = gbkStr.length();  

        byte[] utfBytes = new byte[3 * n];  

        int k = 0;  

        for (int i = 0; i < n; i++) {  

            int m = gbkStr.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;  

    }  

 

public static void main(String[] args) {

 

System.out.println(utfToGbk("中文测试"));

 

System.out.println(gbkToUtf8("455测试中文"));

}

}

 

 

分享到:
评论

相关推荐

    c gbk和 utf-8 转换

    本文将深入探讨C语言中如何实现GBK与UTF-8的互相转换,同时不依赖任何外部库。 GBK是中国大陆广泛采用的一种汉字编码标准,它是GB2312的扩展,包含了更多的汉字和符号,能够覆盖大部分中文字符。UTF-8则是一种多...

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_

    当UTF-8字符串中包含GBK不支持的字符时,转换可能会失败或者产生乱码。因此,在进行编码转换时,需要确保清楚源字符串的编码类型,并且在转换前后进行适当的错误检查和处理。 总的来说,理解和掌握UTF-8和GBK这两种...

    C#写的 GBK GB2312 UTF-8转换

    Console.WriteLine("GBK转UTF-8后的字符串:" + utf8Str); } } ``` 在这个例子中,`Encoding.GetEncoding("GBK")`获取了GBK编码器,`GetBytes()`方法将GBK编码的字符串转换为字节数组,然后`Encoding.UTF8....

    GBK与UTF-8转码(C++)

    ### GBK与UTF-8转码(C++) #### 知识点概述 本文将详细介绍如何在Microsoft Foundation Classes (MFC)环境下实现GBK与UTF-8之间的编码转换。该技术适用于那些需要处理不同字符集数据的应用程序开发场景,特别是在...

    utf-8 ansi 字符互转 工具

    在IT领域,字符编码是一个非常重要的概念,尤其是在处理多语言文本时。...在给定的压缩包文件“bmhzgj”中,可能包含的就是一个用于实现UTF-8与ANSI字符互转的工具,用户可以下载并使用它来解决实际问题。

    文件编码转换,GBK和UTF-8双向互换,批处理文化方法

    文件包含:gbk2utf-8.bat、utf-82gbk.bat、iconv.exe及使用说明.txt四个文件 使用说明:1把要转换的所有.h和.c文件拷入该目录下,双击相应的bat文件即可。 2转换结果会保存在utf-8Res或gbkRes目录下。 3如果转换除...

    GBK 与 UTF-8 间编码转换

    对于GBK到UTF-8的转换,首先需要将GBK编码的每个双字节视为一个独立的字符,然后查找对应的Unicode码点,最后按照UTF-8的规则将其转换成1至3个字节的序列。相反,从UTF-8到GBK的转换则需要识别出UTF-8编码的字节序列...

    c语言gbk、utf8转换编码表及函数

    - `gbk_to_utf8()`函数可能接收GBK编码的字符串作为输入,返回转换后的UTF-8编码字符串。 - `utf8_to_gbk()`函数则相反,它接受UTF-8编码的字符串,返回GBK编码的字符串。 6. **注意事项** - 转换过程中需要处理...

    GBK与UTF-8之间的转换

    GBK与UTF-8之间的转换是一种常见的编码转换过程,在很多情况下,我们需要将GBK编码的字符串转换成UTF-8编码的字符串。然而,这种转换过程并不简单,需要我们了解编码的基本原理和规则。 首先,让我们了解一下GBK和...

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

    - **UTF-8到ISO-8859-1再到UTF-8**: 类似地,通过这种方式也可以从乱码中恢复正确的字符串。 #### 五、结论 理解并熟练掌握不同字符编码之间的转换是非常重要的,特别是在处理国际化和多语言文本的应用程序中。...

    C语言字符编码转换UNICODE、GBK、UTF-8互相转换

    例如,从GBK转到UTF-8,只需将GBK的宽字符转换为对应的UTF-8字节序列。 4. **编码**:将Unicode字符数组编码为目标编码。对于GBK,同样需要借助外部库或API;对于UTF-8,你可以手动构建字节序列,遵循UTF-8的规则。...

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip

    转换过程包括读取UTF-8编码的字符串,然后根据GBK编码规则重新排列字节,以生成GBK编码的字符串。这个过程中需要注意字节顺序和多字节字符的处理,以确保转换的准确性。 LabVIEW编程环境中,可以创建自定义VI(虚拟...

    c++ utf-8转gbk

    可能的类定义包括构造函数、析构函数以及`toGBK`和`fromGBK`这样的方法,分别用于将UTF-8字符串转换为GBK,以及将GBK字符串转换为UTF-8。 在`StringConvert.cpp`中,会实现这些声明的方法。转换过程通常涉及以下几...

    关于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.rar_c++ string utf-8_string to utf-8_utf_utf 8_utf-8

    本文将深入探讨如何在C++中处理UTF-8字符串,并介绍相关的关键概念和技术。 首先,C++标准库并没有直接支持UTF-8编码的内置类型,但是我们可以通过`std::string`类来间接地操作UTF-8字符串。`std::string`通常用来...

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

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

    c/c++ 字符集 gbk/utf8互转,Ansi/Utf8互转 纯c实现跨平台

    4. `utf8_to_ansi(char* utf8_str, char* ansi_str)`: 这个函数则将UTF-8字符串转换成系统默认的ANSI编码。与前面的转换不同,这里可能需要根据目标系统动态选择转换规则。 实现这些转换的关键在于理解和正确处理...

    utf-8 互转 gb2312 转码

    需要注意的是,不是所有UTF-8或GB2312编码的字符串都能相互转换,因为GB2312编码范围有限,不能表示UTF-8中的所有字符。在实际操作中,我们需要先检查输入字符串的编码类型,再进行相应的转换,以防止出现编码错误。...

    易语言判断UTF-8字符

    4. **字符串处理技巧**:在易语言中,可以结合其他字符串处理函数,如`取字符串长度`、`截取字符串`等,配合`IsTextUTF8`来实现更复杂的文本操作,例如将非UTF-8字符串转换为UTF-8,或者从UTF-8字符串中提取特定部分...

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

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

Global site tag (gtag.js) - Google Analytics