客户端在代码中以post方式向服务端发送请求,服务端接收请求后,返回页面,返回的页面在客户端内嵌的浏览器中显示正常。在Tomcat下测试没有问题,但是WebSphere下测试,was的日志中得到的请求信息中文乱码,都是问号。服务端页面如下设置:<%@ page language="java" import="java.util.*" contentType="text/html" pageEncoding="utf-8"%>
服务端使用struts2,添加了编码的filter,CharacterEncodingFilter,编码UTF-8WAS服务器设置如下参数:
-Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh -Duser.region=CN客户端请求代码:            URL url = new URL(strUrl);
            URLConnection connection = url.openConnection();
            connection.setDoOutput(true);
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
            out.write(input);
            out.flush();
            out.close();

解决方案 »

  1.   

    试着调参数呗。
    file.encoding一般指的是开文件时的默认字符集,user.language/region一般是读resource bundle文件时使用的Locale。
    那就改成
    -Ddefault.client.encoding=UTF-8 -Dfile.encoding=GBK -Duser.language=Zh -Duser.region=CN
    试试看。
    (蒙的)
      

  2.   

    可能是
    -Dclient.encoding.override=UTF-8
    参见
    http://www-01.ibm.com/software/globalization/j2ee/encoding.jsp
      

  3.   

    -Dclient.encoding.override=UTF-8和-Ddefault.client.encoding=UTF-8 -Dfile.encoding=GBK -Duser.language=Zh -Duser.region=CN都试过了还是不行。was日志里的中文不全是乱码,服务端代码里的中文,输出到日志不是乱码。客户端向服务端发送的请求是json格式的字符串,该字符串中的中文是乱码。
      

  4.   

    在url.openConnection之后,加一句
    connection.setRequestProperty("Accept-Charset", "UTF-8");
    试试看。如果依然不能解决的话,请描述一下如何乱码的(什么字符对应什么字符)
      

  5.   

    后来在客户端调用前用java.net.URLEncoder.encode(input, charset)转换了一下解决了。不过感觉还是不太好,先结贴了,多谢各位。