zoukankan      html  css  js  c++  java
  • java解决中文乱码的几种写法

    工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考。

     首先定义一个汉语字符串

    String zhName = "错误码模板";

    一、java.net.URLEncoder.encode(zhName, "UTF-8");

    这种写法 在谷歌浏览器 、 IE浏览器上,表示很好用。直接解决掉了乱码问题。

    但是在火狐浏览器上,导出的文件名没有解码,如下图。

    二、new String(zhName.getBytes("UTF-8"),"iso-8859-1");

    第二种写法是实例化String,修改编码格式。

    经试验,谷歌浏览器,火狐浏览器,都好用。但是IE浏览器又乱码了。

    此时有些凌乱了,如何同时兼容三个浏览器呢。接下来上大招。

    三、

    同时兼容chrome Firefox IE 三个浏览器写法
    String zhName = "错误码模板";
    String header = request.getHeader("User-Agent").toUpperCase();
    if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
    zhName = URLEncoder.encode(zhName, "utf-8");
    zhName = zhName.replace("+", "%20"); //IE下载文件名空格变+号问题
    } else {
    zhName = new String(zhName.getBytes(), "ISO8859-1");
    }
    response.setHeader("Content-Disposition", "attachment;filename="+zhName+ ".txt");

    以上,哈哈完美兼容三个浏览器。问题解决。

    wuli哥哥是傻帽
  • 相关阅读:
    DataItem 的使用[转帖]
    xmpp协议阅读总结
    smart pointer shared_from_this的使用
    std IO库, stringstream, 简看1
    const成员函数, const member function
    enum 随笔
    分隔和截断字符串, boost string algorithm library中的split和trim
    C++中异常处理
    boost::thread中的锁
    函数对象function object 以及boost::bind的一点了解
  • 原文地址:https://www.cnblogs.com/shiyuetaozi/p/7521623.html
Copyright © 2011-2022 走看看