GBK编码字节流与UTF-8编码字节流的转换

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BianMaDemo4 {
    public static void main(String[] args) throws IOException, FileNotFoundException {

        /*
         *
         * GBK编码字节流与UTF-8编码字节流的转换:
         * 操作步骤就是:先解码:new String(src,0,len,"GBK")得到字符串;再使用getBytes("UTF-8")得到UTF-8编码字节数组
         */

        //gbk-->utf-8
        FileInputStream fis=new FileInputStream("gbk_file.txt");//gbk文件
        FileOutputStream fos=new FileOutputStream("222.txt");//utf-8文件
        byte[] src=new byte[1024];
        int len;
        byte[] dest;
        while((len=fis.read(src))!=-1){
            dest=new String(src,0,len,"GBK").getBytes("UTF-8");
            fos.write(dest,0,dest.length );
        }

        //utf-8-->gbk
        /*FileInputStream fis=new FileInputStream("222.txt");//utf-8文件
        FileOutputStream fos=new FileOutputStream("gbk_file.txt");//gbk文件
        byte[] src=new byte[1024];
        int len;
        byte[] dest;
        while((len=fis.read(src))!=-1){
            dest=new String(src,0,len,"UTF-8").getBytes("GBK");
            fos.write(dest);
        }*/

        fis.close();//释放资源
        fos.close();

    }

}

原文地址:https://www.cnblogs.com/abtious/p/12293387.html

时间: 2024-07-29 17:15:00

GBK编码字节流与UTF-8编码字节流的转换的相关文章

检测字节流是否是UTF8编码

几天前偶尔看到有人发帖子问"如何自动识别判断url中的中文参数是GB2312还是Utf-8编码" 也拜读了wcwtitxu使用巨牛的正则表达式检测UTF8编码的算法. 使用无数或条件的正则表达式用起来却是性能不高. 刚好曾经在项目中有类似的需求,这里把处理思路和整理后的源代码贴出来供大家参考 先聊聊原理: UTF8的编码规则如下表 看起来很复杂,总结起来如下: ASCII码(U+0000 - U+007F),不编码 其余编码规则为 ?第一个Byte二进制以形式为n个1紧跟个0 (n &

GBK,UTF-8,和ISO8859-1之间的编码与解码

Unicode.UTF-8 和 ISO8859-1到底有什么区别 将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687".注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示". 2. 编码基本知识 最早的编码是iso8859-1,和ascii编码相似.但为了方便表

UTF-8和GBK编码之间的区别(页面编码、数据库编码区别)以及在实际项目中的应用

第一节:UTF-8和GBK编码概述 UTF-8 (8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码,又称万国码,它包含全世界所有国家需要用到的字符,是国际编码,通用性强,是用以解决国际上字符的一种多字节编码.由Ken Thompson于1992年创建.UTF-8用1到4个字节编码UNICODE字符,它对英文使用8位/8Bit(即1个字节/1Byte),中文使用24位/24Bit(3个字节/3Byte)来编码.用在网页上可以同一页

ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析

ASCII.Unicode.UTF-8.UTF-16.GBK.GB2312.ANSI等编码方式简析 序言 从各种字节编码方法中,能看到那个计算机发展的洪荒时期的影子. ASCII ASCII码有标准ASCII码和拓展ASCII码之分,这里分开讲解. 标准ASCII码 标准ASCII码占用一个字节,但是只用了后7位,第一位是0.一个字节本来可以表示256种不同情况,而由此ASCII码只有128种符号.这128种符号包括英文26字母的大小写.数字0-9.32个不可打印的控制字母.符号(就是我们在键盘

【字符编码】彻底理解字符编码

一.前言 在解决昨天的问题时,又引出了很多新的问题,如为什么要进行编码,这些编码的关系如何,如ASCII,IOS-8859-1,GB2312,GBK,Unicode之间的关系,笔者想要彻底理解字符编码背后的故事,遂进行了探索,具体笔记如下.如园友能读完本篇文章,我相信会解开很多疑惑. 二.字符编码 2.1 为何需要编码? 我们知道,所有的信息最终都表示为一个二进制的字符串,每一个二进制位(bit)有0和1两种状态.当我们需要把字符'A'存入计算机时,应该对应哪种状态呢,存储时,我们可以将字符'A

【字符编码】彻底理解字符编码(转)

原文:http://www.cnblogs.com/leesf456/p/5317574.html 一.前言 在解决昨天的问题时,又引出了很多新的问题,如为什么要进行编码,这些编码的关系如何,如ASCII,IOS-8859-1,GB2312,GBK,Unicode之间的关系,笔者想要彻底理解字符编码背后的故事,遂进行了探索,具体笔记如下.如园友能读完本篇文章,我相信会解开很多疑惑. 二.字符编码 2.1 为何需要编码? 我们知道,所有的信息最终都表示为一个二进制的字符串,每一个二进制位(bit)

从原理上搞定编码(二)-- Web编码

周末宅在家里睡完觉就吃饭,吃完饭接着睡觉,这日子过的实在是没劲啊.明明还有计划中的事情没有做, 为什么就是不想去做呢,这样的生活持续下去,必然会成为一个彻头彻尾的loser.上一篇写的 初识编码 ,这一篇把web编码写出来和菜鸟们分享一下.图片比较多,手机用户不要看,流量没了俺不负责. 一.html页面编码 当浏览器请求一个静态的html页面时,服务器会将html页面的字节流通过网络传输给浏览器.浏览器再将字节流解码成相应的html文本字符,然后将html元素渲染出来.在这个流程中浏览器有一个解

从原理上搞定编码(一)-- 初识编码

编码问题一直都伴随着程序猿从不间断,刚开始学编程的时候好多次遇到编码问题,解决了文件读取的编码问题,又遇到了网络编码问题,解决了网络编码问题又遇到了数据库编码问题.总结一下无非就是编码原理没搞清楚,希望本文能从原理上让菜鸟们理解编码,遇到问题可以从原理上搞定编码. 一.编码 人类先有了自己的语言,交流了若干个世纪,然后出现了计算机.可惜计算机只认0和1,人类只能认文字,双方都不能妥协,那就必须要有一个从文字到0.1的映射了.从文字到0.1的映射称为编码,反过来从0.1到文字叫解码. 具体什么是编

关于编码问题以及不同平台编码及string与编码的关系

说明:这里简要说明一下不同平台的编码不同,c语言中的char *与编码的关系这些问题,及对通常困扰的乱码问题做个总结 一.编码 简单说,就是计算机识别信息的一种格式,ascal.utf-8这些都属于编码,计算机根据这些编码标准,解读出内容.l 二.ANSI.ascll.utf8.unicode等说明 1.  ASCII和Ansi编码 字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,内码分为 单字节内码 -- Single-Byte charac

你不知道的 字符集和编码(编码字符集与字符集编码)

我的上篇文章,有朋友提出字符集和编码的区别,我在此立文和大家讨论下 常说的字符集和编码区别,其实就是编码字符集和字符集编码的区别,其实,单单如果只是说字符集,没有任何编码的概念的话,那么字符集其实仅仅是一个简单的字符的集合,或者说是一个抽象的字符的集合,包括文字,符号等等,不参与任何存储形式,只是存在这么各种各样标准的字符的集合 如果仅仅是抽象的字符集,我们是无需拿出讨论的,因为没有任何异议,通俗易懂,而常说的字符集指的编码字符集,比如常见的 unicode.ascii.gb2312.gbk等,