Flex与java基于HttpService通信的中文参数传递乱码问题

 

    刚学习Flex,在开始学习Flex的Remote通信时,似乎没有遇到后台java与前台flex通信

 

的编码问题,前俩天在维护一个系统时终于碰到了: 开始客户端使用的是get方式传递中文

 

数,在配置了Tomcat服务器的conf文件下server.xml中服务器的编码为utf-8后,仍不行,

 

后来在把get方式换成post方式时,程序调试成功,代码如下:

 

 

 //u为url字符串,/doLoad为一个servlet的url pattern	
  var u:String ="http://localhost:8080/TestProject/doLoad”; 
  var request:URLRequest = new URLRequest(u); 
  request.method = URLRequestMethod.POST;
   var vars: URLVariables = new URLVariables (); 
   vars["file"] = filePath; //把参数键,值对放到vars对象中. filePath含有中文 
   request.data = vars; 
   //myFile是自己定义的一个FileReference,Flex的一个负责上传或者下载的类 
   myFile.upload(request,param,false);
    myFile.addEventListener(ProgressEvent.PROGRESS,onProcess);
    myFile.addEventListener(Event.COMPLETE,onComplete);

 


而后发现用Get方式传递,其实只需要对参数进行Url的格式转换便正确,代码如下 

 

 

 

 var u:String="http://localhost:8080/TestProject/doLoad?file= "+encodeURIComponent(filePath); 
   
 var request:URLRequest = new URLRequest(u); 
   
 request.method = URLRequestMethod.GET; 

  myFile.upload(request,param,false);	
     
  myFile.addEventListener(ProgressEvent.PROGRESS,onProcess); 
   
  myFile.addEventListener(Event.COMPLETE,onComplete);

 

 

  因为Tomcat已经配置编码为utf-8,所以在servlet端对get的参数的获取就不需要进行解码

 

了, 如果没有配置服务器编码则需要解码:

 

 

 

 	filename = request.getParameter("file");
	
     	//如果没有对tomcat的默认字符编码配置则需要如下url解码信息 
     	filename= java.net.URLDecoder.decode(filename,"UTF-8");  

 

 

这也是flex的HttpServices通信(Get和Post方式)的差异吧。

 

 

你可能感兴趣的:(servlet,中文乱码,Flex,httpservice)