`
3213213333332132
  • 浏览: 79749 次
社区版块
存档分类
最新评论

linux系统服务器下jsp传参数乱码

    博客分类:
  • jsp
阅读更多
在一次解决乱码问题中, 发现jsp在windows下用js原生的方法进行编码没有问题,但是到了linux下就有问题, escape,encodeURI,encodeURIComponent等都解决不了问题
但是我想了下既然原生的方法不行,我用el标签的方式对中文参数进行加密解密总该可以吧。于是用了java的java.net.URLDecoder,结果还是乱码,最后在绝望之际,用了下面的方法解决了问题

在EL表达式自定义扩展函数库中的加入
 <function>
        <description>url字符编码</description>
        <name>encodeWord</name>
        <function-class>com.miri.boss.comm.util.ELFunction</function-class>
        <function-signature> 
             java.lang.String encodeWord(java.lang.String) 
        </function-signature> 
        <example>${f:encodeWord('要编码的字符串')}</example>
    </function>
    <function>
        <description>url字符解码</description>
        <name>decodeWord</name>
        <function-class>com.miri.boss.comm.util.ELFunction</function-class>
        <function-signature> 
             java.lang.String decodeWord(java.lang.String) 
        </function-signature> 
        <example>${f:decodeWord('要解码的字符串')}</example>
    </function>


ELFunction.java中写加解密方法
/**
	 * 对字符串escape编码
	 * 
	 * @param word
	 * @return
	 */
	public static String encodeWord(String word)
	{
		int i;
		char j;
		StringBuffer tmp = new StringBuffer();
		tmp.ensureCapacity(word.length() * 6);
		for (i = 0; i < word.length(); i++)
		{
			j = word.charAt(i);
			if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j))
				tmp.append(j);
			else if (j < 256)
			{
				tmp.append("%");
				if (j < 16)
					tmp.append("0");
				tmp.append(Integer.toString(j, 16));
			}
			else
			{
				tmp.append("%u");
				tmp.append(Integer.toString(j, 16));
			}
		}
		return tmp.toString();
	}
	
	/**
	 * 对escape码进行unescape解码
	 * 
	 * @param word
	 * @return
	 */
	public static String decodeWord(String word)
	{
		StringBuffer tmp = new StringBuffer();
		tmp.ensureCapacity(word.length());
		int lastPos = 0, pos = 0;
		char ch;
		while (lastPos < word.length())
		{
			pos = word.indexOf("%", lastPos);
			if (pos == lastPos)
			{
				if (word.charAt(pos + 1) == 'u')
				{
					ch = (char) Integer.parseInt(word.substring(pos + 2, pos + 6), 16);
					tmp.append(ch);
					lastPos = pos + 6;
				}
				else
				{
					ch = (char) Integer.parseInt(word.substring(pos + 1, pos + 3), 16);
					tmp.append(ch);
					lastPos = pos + 3;
				}
			}
			else
			{
				if (pos == -1)
				{
					tmp.append(word.substring(lastPos));
					lastPos = word.length();
				}
				else
				{
					tmp.append(word.substring(lastPos, pos));
					lastPos = pos;
				}
			}
		}
		return tmp.toString();
	}

在jsp页面中引入
<%@ taglib prefix="ks" uri="http://www.miri.com/elfunction" %>

页面中对中文参数的加密(两次加密)
${ks:encodeWord(ks:encodeWord(programList.channelName))}

页面中对中文参数的解密
${ks:decodeWord(param.channelName)}
1
1
分享到:
评论

相关推荐

    java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose

    java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose java aspose word 上传到服务器 导出的word 中文字体乱码 ...

    JSP中文乱码问题

    ### JSP中文乱码问题解析 #### 一、引言 在进行Web开发时,特别是使用Java Server Pages(JSP)技术,经常会遇到中文显示乱码的问题。这不仅影响用户体验,也增加了开发与调试的复杂度。本文将针对常见的JSP中文...

    如何解决Tomcat下中文乱码问题?

    总结来说,解决Tomcat下的中文乱码问题,关键在于确保JSP页面的编码与服务器设置一致,并在处理表单提交时正确设置请求的字符编码。在实际开发中,推荐使用UTF-8作为统一的编码标准,因为UTF-8能够兼容各种语言,...

    Jsp页面中的字符编码方式与乱码解决方法

    JSP 页面中的字符编码方式与乱码解决方法 在 JSP 中,字符编码方式的设置是非常重要的,因为它直接影响着页面的显示效果。如果不正确地设置字符编码方式,可能会出现乱码问题。下面我们将详细介绍 JSP 中的字符编码...

    JSPSmartUpload上传文件乱码解决纪实+UploadBean上传解决方案

    在本案例中,开发者在Windows环境下开发的应用在Linux服务器上出现了乱码问题。 首先,开发者尝试了常见的解决乱码问题的方法,包括在JSP页面中设置contentType指定字符集(如`;charset=gb2312"&gt;`),使用ISO-8859-...

    JSP乱码解方案.doc

    但在英文系统环境下,例如LANG设置为en_US的Linux、AIX或Solaris,需要将JVM的`file.encoding`设置为GBK,以防止乱码。 2. **Java编译**:JSP被编译为Java源文件,此过程同样受到`file.encoding`的影响。无论JSP...

    smartUpload上传文件包修改后解决中文乱码

    对于Linux或Unix系统,推荐使用UTF-8编码。可以使用Java的`new String(fileBytes, "UTF-8")`来转换文件名的编码。 4. **JSP页面设置**:在JSP页面中,也需要设置页面编码为UTF-8,通常在页面顶部添加以下声明: ```...

    解决JSP乱码

    ### 解决JSP乱码问题详解 在Web开发过程中,特别是在使用Java Server Pages(JSP)进行页面渲染时,字符编码问题常常导致页面显示乱码。本文将详细探讨如何有效地解决JSP页面中的乱码问题,并提供一些实用的解决...

    java中文乱码字符集解决大全.pdf

    大多数浏览器默认使用UTF-8编码传递参数,因此,服务器端接收中文参数时,需确保正确解码,如使用URLEncoder/URLDecoder进行编码解码。 总结,Java中文乱码问题涉及多个层面,包括源文件编码、编译过程、执行环境...

    jsp中文问题解决方案(完整版)

    JSP中文问题的出现往往与编码环境的不一致有关,这包括操作系统、J2EE容器、数据库系统和JDBC驱动等多方面因素。要解决这类问题,开发者需要对“上下文环境”有清晰的了解。 1. 分析乱码问题: 首先,开发者要确定...

    linux下mysql乱码问题的解决方案

    项目进行到和服务器交互,通过post访问服务器端jsp,jsp访问服务器端mysql数据库,最终返回到客户端的中文出现乱码问题。 在整个流程中,出现错误的原因可能是三个:post未设置编码或者编码不相符合,jdbc出现问题,...

    彻底解决jsp中用SmartUpload上传附件中文乱码问题实用.pdf

    通过以上步骤,我们可以确保在不同的操作系统(如Win2000、Unix、Linux)和Web服务器(如Tomcat、WebSphere)环境下,使用SmartUpload上传和下载中文附件时,文件名都不会出现乱码问题。关键在于正确处理文件名的...

    tomcat显示出现中文乱码问题.docx

    在使用Apache Tomcat服务器的过程中,有时会遇到中文乱码的问题,这主要表现为在日志输出、控制台打印或者Web应用中的请求参数、响应内容显示不正常,出现问号或者其他非中文字符。这个问题通常是由于字符编码设置不...

    中文乱码问题

    4. **环境变量调整**:如果是在Linux环境下部署,可能还需要修改环境变量,如通过编辑`/etc/sysconfig/i18n`文件来设置正确的系统语言环境。 5. **日志排查**:当遇到乱码问题时,首先查看服务器日志,尝试找到乱码...

    解决JSP中文显示问题的几个方法

    例如,在Windows系统下,文件系统的默认编码通常为GBK或GB2312,而在Linux系统下,则可能是UTF-8或ISO-8859-1。 针对这种情况,可以采取以下措施: - 在Windows环境下,直接使用GBK或GB2312进行编码转换。 - 在...

    免费 java中文乱码字符集处理大全.docx

    4. 浏览器通常使用UTF-8编码来传递参数,与某些系统或程序使用的编码格式不一致,这也可能导致中文乱码。 5. 不同类型的Java程序(如Console应用、JSP、Servlets、EJB等)在接收和输出中文字符时,都会涉及编码和...

    JspRun!_6.0.0_GBK_War.zip安装压缩包

    使用Java语言开发,利用了Java的跨平台性,使得论坛可以在多种操作系统上运行,如Windows、Linux、Unix等。 2. **JSP技术**:JSP(Java Server Pages)是Java服务器端的动态网页技术,它将HTML代码与Java代码相...

Global site tag (gtag.js) - Google Analytics