`
comeonbabye
  • 浏览: 442036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Solaris上中文请求乱码

阅读更多

Solaris上中文请求乱码

项目概况:

过滤器使用GBK处理中文

对于汉字,使用Post方式没有乱码,使用get方式在Solaris平台上的Weblogic服务器出现乱码。

环境

WinXP+Tomcat5.5.28

OS 名称:          Microsoft Windows XP Professional

OS 版本:          5.1.2600 Service Pack 3 Build 2600

没有乱码现象出现。

Solaris平台出现乱码

root@portalA # locale

LANG=zh_CN.GBK

LC_CTYPE=”zh_CN.GBK”

LC_NUMERIC=”zh_CN.GBK”

LC_TIME=”zh_CN.GBK”

LC_COLLATE=”zh_CN.GBK”

LC_MONETARY=”zh_CN.GBK”

LC_MESSAGES=”zh_CN.GBK”

LC_ALL=

root@portalA # uname -a

SunOS portalA 5.10 Generic_120011-14 sun4u sparc SUNW,Sun-Fire-15000

root@portalA #

上中文出现乱码;

解决方法如下:

1、  前台传值的时间,对URL进行编码

2、  后台获取时,采用URLDecoder类进行解码而已

JavaScript 中的处理

function printImag(){

var url = “/JsjxzlpgAction.do?method=queryPrint&yxsh=”+”中文汉字”;

url=encodeURI(encodeURI(url));

window.open(url, ‘数据表’, “location=no,menubar=no,resizable=yes,

scrollbars=yes,status=yes,titlebar=no,toolbar=no”);

}

测试代码:

<html>

<body>

<script type=”text/javascript”>

var url=”/JsjxzlpgAction.do?method=queryPrint&yxsh=”+”中文汉字”;

document.write(encodeURI(url)+ “<br />”);

document.write(encodeURI(encodeURI(url))+”<br />”);

document.write(encodeURI(“,/?:@&=+$#”));

</script>

</body>

</html>

输出如下:

/JsjxzlpgAction.do?method=queryPrint&yxsh=%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97
/JsjxzlpgAction.do?method=queryPrint&yxsh=%25E4%25B8%25AD%25E6%2596%2587%25E6%25B1%2589%25E5%25AD%2597
,/?:@&=+$#

encodeURI函数的再一次处理就是对特殊字符,例如%编码成%25

Java 中的处理

String yxsh =

java.net.URLDecoder.decode (request.getParameter(“yxsh”) , “UTF-8″);

使用Java

String str = “/JsjxzlpgAction.do?method=queryPrint&yxsh=” + “中文汉字”;

String encoding = “utf-8″;

String strEnc=java.net.URLEncoder.encode (str, encoding);

System.out .println(strEnc);

System.out .println(java.net.URLDecoder.decode (strEnc,encoding));

输出结果如下:

%2FJsjxzlpgAction.do%3Fmethod%3DqueryPrint%26yxsh%3D%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97

/JsjxzlpgAction.do?method=queryPrint&yxsh=中文汉字

进一步测试:

String str2=”%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97″;

System.out .println(java.net.URLDecoder.decode (str2,encoding));        str2=”%25E4%25B8%25AD%25E6%2596%2587%25E6%25B1%2589%25E5%25AD%2597″;

System.out .println(java.net.URLDecoder.decode (str2,encoding));

输出结果如下:

中文汉字

%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97

可见java.net.URLDecoder.decode (str2,” utf-8”)的本质意义就是将%XX%XX的字符串表示按utf-8来进行解码。

当时冒似是在URL后面带上了这样的参数:

“parm=《%=java.net.URLEncoder.encode(parm,”utf-8″)%>”

然后在JAVA里取出来:

String mytext2 = java.net.URLDecoder.decode(request.getParameter(PARM), “utf-8″);

最终通过这种方式进行了处理。

主要是关注encodeURI函数和URLEncoder和URLDecoder类,来进行数据处理。

Reference

http://bbs.firnow.com/dview37t16452.html

http://hi.baidu.com/%B4%FA%CD%E9/blog/item/b195d554158ba45f574e005e.html

http://www.javaeye.com/topic/456553

http://yiminghe.javaeye.com/blog/243812

http://www.w3school.com.cn/js/jsref_encodeURI.asp

分享到:
评论

相关推荐

    java乱码问题解决方法

    Java 乱码问题是 Java 开发中常见的问题之一,解决这个问题需要了解 Java 的编码方式、JSP 中文乱码问题、Tomcat 5.5 中文乱码问题、JDBC ODBC Bridge 的 Bug 及其解决方法、Solaris 下 Servlet 编程的中文问题及...

    JSP乱码解方案.doc

    4. **URL编码**:GET或POST请求中的汉字可能会导致乱码,因为SUN的J2SDK在解析参数时未考虑浏览器的编码设置。为解决这个问题,Servlet API 2.3引入了`HttpServletRequest.setCharacterEncoding`方法,允许在获取...

    JAVA开发中的中文处理问题

    综上所述,Java开发中的中文处理问题主要涉及字符编码的转换和设置,以及与数据库的兼容性。通过理解Unicode编码机制,正确设置编码参数,以及适时进行字符转换,可以有效地解决这些问题,确保中文信息在应用程序中...

    JSP中文处理方法

    - 在Unix/Linux/Solaris等非Windows平台上部署JSP应用时,应特别注意本地化设置,确保与中文字符集的兼容。 - 使用最新的JDK版本和应用服务器,它们通常提供更全面的国际化支持。 - 考虑采用更通用的编码方案,如UTF...

    学习JAVA开发中的中文处理问题.pdf

    其次,当在Solaris环境下进行Servlet编程时,可能会遇到中文显示为乱码的问题。这是因为Servlet默认使用ISO8859-1编码,而中文通常需要GB2312或GBK编码。为了解决这个问题,我们需要在响应给客户端的数据前,明确...

    java常见问题.doc

    为了避免中文乱码,应创建一个`OutputStreamWriter`,指定合适的字符编码(如UTF-8),然后通过`write()`方法写入内容。 这些知识点涵盖了Java环境配置、开发工具选择、Applet调试、JDBC操作数据库时的字符编码问题...

    Java常见问题集锦.doc

    在Solaris平台上,设置环境变量的方式是`setenv JAVA_HOME Java2的安装路径`和`setenv PATH $JAVA_HOME/bin:${PATH}`;在Windows上,命令则是`set JAVA_HOME=Java2的安装路径`和`set PATH=$JAVA_HOMEbin;%PATH%`。 ...

    Everyplace Express Edition

    DB2 Everyplace产品线支持Linux和Solaris操作系统,体现了IBM在跨平台解决方案上的广泛兼容性。 总而言之,根据给定的文件信息,可以推断出“Everyplace Express Edition”是IBM DB2 Everyplace产品线中的一个简化...

    java常见问题收集

    对于Solaris平台,可以通过`setenv JAVA_HOME`来设置Java2的安装目录,然后更新路径变量`setenv PATH $JAVA_HOME/bin:$PATH`。在Windows平台上,则通过`set JAVA_HOME=Java2安装路径`来设置,并更新路径变量`set ...

    java面试题

    在Servlet处理HTTP请求并返回HTML页面时,为了正确显示中文等非英文字符,必须设置正确的字符编码。这通常通过`HttpResponse`对象的`setContentType`方法来指定响应的MIME类型及编码,例如`"text/html;charset=UTF-8...

Global site tag (gtag.js) - Google Analytics