`

火狐浏览器中文乱码

    博客分类:
  • WEB
 
阅读更多

        由于种种原因,LZ项目组中一直使用GBK编码,这个属于历史遗留问题。往常遇到中文乱码问题,基本都是采取页面编码,java端解码的方式进行,费时且费力,需要对中文字段进行特殊处理。

        近期,web端需要进行UI升级,全面使用html5的页面进行升级开发,浏览器版本也从原来的仅支持IE一款,发展为火狐和谷歌一同使用,版本测试期间发现了火狐浏览器的中文乱码问题,所有浏览器url地址栏出现中文参数的http请求,传递到java端参数都面目全非。仔细研究发现,原来是火狐浏览器对于get请求的URI默认使用UTF-8编码,而我们系统中tomcat服务器server.xml的配置为GBK编码,因此产生乱码,使用场景如:window.open、window.location.href等js方式的页面跳转,以及form表单的get方式提交。

问题解决的过程中,一共尝试了三种解决方案,列举如下:

解决方案一:需要修改所有jsp页面编码配置,最彻底的解决方案,但是需要测试人员全局进行验证。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<Connector acceptCount="50" connectionTimeout="20000" enableLookups="false" maxThreads="100" port="12345" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/> 
经测试,jsp和server.xml同时修改为UTF-8编码,中文乱码问题解决。
解决方案二:
使用post方式提交并弹出新页面,增加方法openWindowWithPost,采用此方法,提交的新页面中地址栏没有参数列表,更加简洁且安全,代码如下。
/*
* post方式打开新窗口
*@param url  open窗口要打开的地址
*@param data 参数对象
*@param windowType 1新页签,2弹出窗口
*@param windowParam 打开窗口的参数,例如status=yes,toolbar=no,menubar=no,location=no,width=,height,top=,left=
*/
function openWindowWithPost(url,data,windowType,windowParam)
{  
	if($("#hideform").length > 0)
	{
		$("#hideform").remove();
	}
	$(document.body).append('<form action="" method="post" id="hideform"></form>');
	for(var i in data)	
	{
		$("#hideform").append('<input type="hidden" id="'+i+'" name="'+i+'" value="'+data[i]+'"/>');
	}
    $("#hideform").attr("action",url);      
    var toDay =  new Date();    
    windowname="win"+toDay.getTime();
	window.open(windowType == 1 ? "about:blank" : "_blank",windowname,windowParam);  
    $("#hideform").attr("target",windowname);  
    $("#hideform").submit();      
}
使用方法也很简单,案例如下:
var data = {};
data["param1"] = "aaa";
data.param2 = true;
data.param3 = 100;
openWindowWithPost(url,data,1,"");
解决方案三:
前后台编解码的方式,增加工作量,对中文参数需要特殊处理。
encodeURIComponent(param1)
public static String decodeStr(String sourceStr)
{
	if(!StringUtil.IsEmpty(sourceStr))
	{
		try
		{
			sourceStr = URLDecoder.decode(sourceStr, "UTF-8");
		}
		catch (UnsupportedEncodingException e)
		{
		}
	}
	return sourceStr;
}
1
1
分享到:
评论

相关推荐

    Linux解决firefox中文页面乱码问题

    1.由于 firefox 默认是允许网页自己选择字体,在 Linux 上便会出现部分网站的乱码情况。因此可以取消允许页面自己选择字体这个选项便能解决部分乱码情况。  2.倘若还有乱码,以及其他应用程序乱码,则尝试如下...

    英文版Ubuntu Firefox中文乱码解决方案.docx

    在英文版Ubuntu系统中,用法Firefox扫瞄器中文乱码问题可能是由于多种原因引起的,如系统字体配置不当、扫瞄器设置不正确、输入法问题等。在本文中,我们将介绍解决该问题的步骤和可能的原因。 二、可能的原因 1. ...

    hadoop中文乱码问题

    【Hadoop中文乱码问题详解】 在大数据处理领域,Hadoop是一个不可或缺的开源框架,它提供了分布式存储(HDFS)和分布式计算(MapReduce)的能力。然而,在处理包含中文字符的数据时,用户可能会遇到中文乱码的问题...

    Ubuntu Server环境下中文乱码之显示方块.docx

    Ubuntu Server 环境下中文乱码之显示方块解决方案 在 Ubuntu Server 环境下,中文乱码的问题是一个常见的问题,特别是在桌面环境和浏览器中。在这个文件中,我们将讨论 Ubuntu Server 环境下中文乱码之显示方块的...

    JavaWeb新版教程. 项目第三阶段载-使用Base64编解码解决火狐浏览器附件中文乱码问题.avi

    JavaWeb新版教程. 项目第三阶段载-使用Base64编解码解决火狐浏览器附件中文乱码问

    HTML5在IE10、火狐下中文乱码问题的解决方法

    学习几天HTML5了,之前一直在看文档,没有动手写,昨晚开始写代码,发现中文显示乱码,之前以为是不兼容IE10、然后换成火狐,谁知也不行,最后折腾一番,原来在编辑网页的时候,不仅仅是添加&lt;meta charset=utf-8&...

    tableexport导处excel中文无乱码demo

    这个“tableexport导出excel中文无乱码demo”专注于解决中文字符在火狐浏览器中的乱码问题,通过正确设置字符编码和使用BOM,确保了导出的Excel文件能够正确显示中文。开发者可以借鉴这个示例,应用到自己的项目中,...

    tableExport + base64 excel、png导出无中文乱码

    本话题主要聚焦于"tableExport + base64"的使用,特别是涉及到中文导出时可能出现的乱码问题,以及不支持IE浏览器的情况。 首先,`tableExport`插件通过将HTML表格转换为对应格式的数据,然后以Base64编码的形式...

    在win7旗舰版电脑中打开网页出现乱码情况怎么办?.docx

    首先,我们需要在自己的Win7旗舰版电脑中打开浏览器程序,可以是谷歌浏览器、火狐浏览器、Microsoft Edge等等。 2. 进入网页窗口 随意进入到一个网页中,这可以是任何一个网页,例如百度、谷歌、YouTube等等。 3....

    kali系统的部署,用于一些想要了解kali系统,且动手能力够强的人

    七、汉化火狐浏览器 使用命令apt-fast -y install firefox-esr-l10n-zh-cn -y安装汉化火狐浏览器。 本指南指导您完成了KaLi系统的基础安装和设置,提高了软件下载和安装的速度,並且解决了中文乱码的问题。

    papaparse.js兼容火狐,谷歌,IE9+

    最新有一个需求是读取远程服务器上的csv文件并提供下载的功能!后来我在网上找到了papaparse.js这个插件!他的却很强大,既能读远程文件...但是我发现他在火狐浏览器上运行的一个bug!只要在火狐上读取,中文就会乱码!

    asp.net 利用NPOI导出Excel通用类的方法

    解决中文文件名保存Excel乱码问题,主要是判断火狐或者IE浏览器,然后做对应的判断处理,核心代码如下: System.Web.HttpContext.Current.Response.ContentType = application/vnd.ms-... //火狐浏览器 System.Web

    html2pdf:html转换为pdf

    1 引入对应的语言包,火狐浏览器预览生成的pdf可能存在部分中文乱码问题,同时因为加载了语言包,生成的pdf更大 使用NotoSansCJKsc-Regular.otf,同时在pom中引入com.itextpdf.font-asian包. 2 设置字体:通过默认字体...

    BvSshClient-Inst官网最新版

    此外,BvSshClient能够与谷歌和火狐浏览器的插件配合使用,这意味着用户可以直接在浏览器中通过SSH连接到远程服务器,无需离开浏览器界面就能进行文件管理、执行命令等操作,这对于Web开发者和系统管理员来说,无疑...

    Java response响应体和文件下载实现原理

    // 火狐浏览器 BASE64Encoder base64Encoder = new BASE64Encoder(); filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?="; } else { // 其它浏览器 } ``` 在实现文件...

    dotNETCMSv1.0sp5源码

    火狐浏览器下安装问题 29.编辑器问题:当光标是定位在文章的下一行 图片添加的时候 就一下子到了最上边 30.新闻设置图片头条设置不成功 31.新增ftp同步(即远程发布功能)。 32.自定义表单回复提供了前台样式...

    风讯 dotNETCMS v1.0 sp5 完整版_升级包 商业版

    火狐浏览器下安装问题 29.编辑器问题:当光标是定位在文章的下一行 图片添加的时候 就一下子到了最上边 30.新闻设置图片头条设置不成功 31.新增ftp同步(即远程发布功能)。 32.自定义表单回复提供了前台样式...

    linux_mint经验_baidu.docx

    - **火狐浏览器安装**: 想要在 Linux Mint 上安装中国版的 Firefox 浏览器,首先需要备份原火狐安装目录(通常位于 `/usr/lib/firefox-3.6.13`)。然后将下载的中国版火狐解压并覆盖至该目录,并将备份的原始火狐...

    网新中英文企业手机电脑一体化建站专业版 v4.9.rar

    温馨提示:“本程序以IE高版本内核开发,后台环境不支持IE9.0及以下版本,请使用IE10.0以上版本浏览器或兼容火狐、谷歌、猎豹等浏览器,推荐使用兼容火狐浏览器登录后台管理, 请勿使用aspweb、小旋风或NETBOX等IIS...

Global site tag (gtag.js) - Google Analytics