zoukankan      html  css  js  c++  java
  • get方式中文乱码问题

    <a target="_blank" href="ftpFileAction!downloadFile.action?filename=测试.xml">点击下载</a>

    如果当前页面编码是utf-8.

    这里是main.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    以及head头

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    并且main.jsp本身的文件编码是utf-8.

    如果是post方式,Servlet后台设置request.setCharacterEncoding('utf-8')后一定得到正确中文。

    但对于get方式,get方式提交参数若包含中文,

    在我本机测试,ie下提交的使用iso-8859-1转码gbk可得到正常中文。

    filename=new String(filename.getBytes("ISO-8859-1"),"gbk");

    在firefox下提交的参数在Servlet中使用iso-8859-1转码utf-8可得到正常中文。

    filename=new String(filename.getBytes("ISO-8859-1"),"utf-8");

    一定要转码的原因是对于get方式提交的参数,tomcat默认不会使用request.setCharacterEncoding的编码方式转码,而是使用ISO-8859-1。

    要保证各浏览器兼容性,

    可以在get方式提交参数时,把参数进行转码。

    encodeURI(适合编码整个URI)和encodeURIComponent(适合编码URI的一部分参数)

    js脚本:

    filename=encodeURIComponent('测试.xml');

    '<a target="_blank" href="ftpFileAction!downloadFile.action?filename='+filename+'">点击下载</a>'

    注明:

    encodeURI, encodeURIComponent 是 UTF-8 的
    escape 是  Unicode 的

    escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

    encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

    encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

  • 相关阅读:
    harbor install & docker-compose
    ngx安装 (转)
    docker对镜像自动重启的设置
    docker安装脚本
    sql中的递归拼接
    【HC89S003F4开发板】 4端口消抖
    【HC89S003F4开发板】 6crc校验
    【HC89S003F4开发板】 3串口调试
    【HC89S003F4开发板】 1环境搭建
    用mkdocs在gitee码云上建立一个简单的文档博客
  • 原文地址:https://www.cnblogs.com/tazi/p/4346340.html
Copyright © 2011-2022 走看看