`

转码utf-8还是gbk

阅读更多

 说今天写这一篇,因为遇到个问题,在centos上导出文件一直乱码。

原来就没出现这问题,适了好多种方法。

最后把导出的编码设成gbk竟然好了。现在还不知其原因,如有高手还请赐教。

 

java代码编码utf-8,

jsp编码utf-8,

centos中i18n:utf-8,

tomcat:uriencoding utf-8.

 

 

 

 public static String toUtf8String(String src)
    {
       byte[] b = src.getBytes();
       char[] c = new char[b.length];
       for(int i=0;i<b.length;i++)
       {
        c[i] = (char)(b[i]&0x00FF);
       }
       return new String(c);
    }

 

 

对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下

   测试文件编码是否为UTF-8

     File file = new File(path);

     InputStream ios = new java.io.FileInputStream(file);

    te[] b = new byte;

     ios.read(b);

     ios.close();

     if (b[0] == -17 && b[1] == -69 && b == -65)

       System.out.println(file.getName() + “:编码为UTF-8″);

     else

       System.out.println(file.getName() + “:可能是GBK,也可能是其他编码。”);

 

 

   public static void downloadFile(HttpServletRequest request,
            HttpServletResponse response, String fileName)
    {
        if (StringUtils.isEmpty(fileName))
        {
            return;
        }

        //导出文件路径
        String filePath = PlatformConfig.getUseDataPath() + Constants.EXPORT_PATH + fileName;
       
        // 处理中文名称,需要编码
        response.setContentType("application/octet-stream; CHARSET=GBK");
       
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try
        {
            response.setHeader("Content-Disposition", "attachment; filename="
              + EncodingUtil.getString(fileName.getBytes("gbk"),
        "ISO8859-1"));
            inputStream = new FileInputStream(filePath);
            outputStream = response.getOutputStream();
           
            transferFile(inputStream, outputStream);
        }
        catch (FileNotFoundException e)
        {
            logger.error(e.toString());
        }
        catch (IOException e)
        {
            logger.error(e.toString());
        }
        finally
        {
            try
            {
                if (inputStream != null)
                {
                    inputStream.close();
                }
            }
            catch (Exception e)
            {
                logger.error(e.toString());
            }
            try
            {
                if (outputStream != null)
                {
                    outputStream.close();
                }
            }
            catch (Exception e)
            {
                logger.error(e.toString());
            }
           
            //删除临时导出文件
            FileTools.delFile(filePath);
        }
    }
   

分享到:
评论

相关推荐

    UTF-8与GBK

    1. 字符识别:首先,需要识别输入的字节流是属于UTF-8还是GBK编码。可以通过字节的特定模式来判断,例如UTF-8的多字节字符以10开头,而GBK的每个字节都不是。 2. 字符解码:对于UTF-8,需要识别出字符的字节数,并...

    GBK、UTF-8编码转换工具

    GBK、UTF-8批量文件3秒快速转码工具(支持GBK,UTF-8免费转换),UTF-8/GBK编码在线转换工具,压缩包可以有多目录与文件,如目录中有图片不会转码,但是会随转码好的文件一起打包下载。 使用帮助 . 上传压缩包(仅支持zip...

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

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

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

    在C语言中,字符编码是非常重要...通过`utf8gbk.h`和`utf8gbk.c`这两个文件,你可以直接在C程序中实现GBK与UTF-8的转换,从而满足项目的需求。不过,要注意,这些函数可能需要根据具体环境和需求进行适当的修改和优化。

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

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

    批量文件转码工具(支持 GBK,UTF-8 转换)

    在提供的压缩包中,包含了一个名为"批量文件转码工具(支持GBK,UTF-8 转换).pdf"的文件,这很可能是该工具的用户手册或说明文档。通过阅读这个文档,用户可以获得更详细的使用指导,包括具体的操作步骤、注意事项...

    utf-8和GBK编码文件互相转换

    UTF-8和GBK是两种常见的字符编码标准,它们各自有不同的特点和应用场景。本文将详细介绍UTF-8和GBK编码,以及如何在.NET环境中进行这两种编码文件的互相转换。 首先,UTF-8是一种基于Unicode的字符编码方案,它能...

    Java 程序转码(UTF-8)

    ### Java程序转码(UTF-8):详细解析与实现 #### 一、引言 在处理文本数据时,字符编码是一项重要的技术基础。不同系统、不同语言环境下的字符编码可能不一致,这就需要进行字符编码转换以确保数据正确显示和处理...

    utf-8 互转 gb2312 转码

    在处理UTF-8和GB2312之间的转码问题时,我们需要确保正确地转换每个字符的编码,以避免乱码情况的发生。转码过程通常包括两个步骤:解码和编码。首先,我们需要将UTF-8编码的字符串解码为Unicode,然后将Unicode转换...

    转码工具中文-utf-8

    例如,GBK编码在简体中文Windows系统中很常见,但在其他系统中可能无法识别,这就需要转码工具将其转换为更为通用的UTF-8编码。 标签"转码工具"明确指出了这个应用的主要功能,即提供字符编码转换的服务。这样的...

    VB6.0 UTF-8转换GB2312函数

    在VB6.0编程环境中,有时我们需要处理不同字符编码之间的转换,例如将UTF-8编码的字符串转换为GB2312编码。UTF-8是一种广泛使用的Unicode编码,而GB2312是中国大陆常用的简体中文字符集,主要用于早期的计算机系统。...

    转码工具gbk转utf-8,支持批量

    本篇文章将详细解析这两种编码方式以及如何进行转换,特别是针对“转码工具gbk转utf-8,支持批量”这一主题。 首先,GBK(Great Chinese Coding)是一种中文扩展的编码标准,它是GB2312的升级版,包含了更多的汉字...

    批量文件转码工具(支持GBK,UTF-8转换)

    在提供的压缩包文件“批量文件转码工具”中,我们可以期待找到一个能够帮助我们方便快捷地处理GBK和UTF-8编码转换问题的实用工具。这个工具可能包括了选择文件、设置目标编码、开始转换等一系列功能,并且已经有人...

    批量文件转码工具,支持GBK,UTF-8转换,window下面使用,亲测可以使用!.zip

    标题中提到的“批量文件转码工具,支持GBK,UTF-8转换”就是这样一个实用工具,特别适合那些需要在GBK和UTF-8之间频繁切换的用户,例如网站开发者、数据处理人员等。 在Windows系统下使用该工具,用户可以轻松解决...

    批量转UTF-8/UTF-8-sig/GB18030等批量转CRLF/LF/CR换行符

    所以,你看到的绝大多数转字符集的程序,都是GBK-&gt;UTF-8,GBK-&gt;BIG5,这种,必须要你提前知道你的文本是什么编码,否则就会乱码。而且,转过一次的文本,再转一次,也会乱码。 我在对比了诸多字符集探测库之后,...

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

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

    utf-GBK转码工具

    2. 指定源编码:用户需要知道或推断出原始文件的编码格式,是UTF-8还是GBK。 3. 选择目标编码:根据实际需求,选择希望转换成的编码格式。 4. 执行转码:工具会读取源文件,按照源编码解码,然后按照目标编码重新...

    DiscuzX3.4UTF8转GBK后乱码解决方案

    首先,我们需要理解UTF-8和GBK两种编码的区别。UTF-8是一种国际标准的多字节字符编码,可以表示Unicode字符集中的所有字符,广泛应用于互联网。GBK是中国大陆地区广泛使用的编码,它是GB2312的扩展,兼容大部分简体...

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

    ### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...

    转码工具,快速实现gbk和utf-8互转

    转码工具,如标题所言,是用来在GBK和UTF-8之间进行转换的软件。这种工具能够帮助用户解决由于编码不一致导致的乱码问题,比如在读取或写入文件时,如果编码格式没有正确匹配,就可能出现无法正常显示或保存文本的...

Global site tag (gtag.js) - Google Analytics