`
jiuyuehe
  • 浏览: 184467 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jquery ajax struts2 数据库等中文乱码问题解决大全

阅读更多
ok 乱码了。

乱码第一件事,静下心来,思考一下这乱码出处的流程。

1、后台发页面的乱码。

首先检查下后台打印出来是否是乱码。

数据来源是1)从数据库出来的话,检查数据库里面是否已经乱码了。检查下数据库的字符集。
          2)是从文件中读出来的话,一定要注意看是用什么格式读取,文件本身是什么格式编码。
注意了这俩2点,来源就清楚了。
读取文件代码:
try {  
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));  
            while(true){  
                String line = br.readLine();  
                if(line!=null){  
                    sb.append(line+"\n");  
                }else{  
                    break;  
                }  
            }  
            br.close();  
            //response.setCharacterEncoding("UTF-8");  //注意这里要在getWriter()之前。
            PrintWriter  out = response.getWriter();  
            
            //response.setContentType("text/html");  
            response.setContentType("text/html;charset=utf-8");  //写这里是没有任何作用的!!!!!!
              
            System.out.println("sb:"+sb.toString());  
             //这么转化一下是否有必要? 
            String des = new String(sb.toString().getBytes("UTF-8"),"UTF-8");  
              
            System.out.println("des:"+des);  
              
            out.print(des);  
            out.flush();  
            out.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            System.out.println("文件读取错误");  
            e.printStackTrace();  
        }  
        return null;  


注意这样的代码。粗心一看觉得没问题,其实问题多得是。

好了以上问题没有。是页面显示乱码了。
  那就看看:1.页面是什么编码。跟response set 的是否一样?
            2.tomcat 里面是否加了 Tomcat中的server.xml中的URIEncoding
            3.用的struts2 的mvc ,那设置了 <conston name="struts.i18n.encoding" value="utf-8"/>;(此处一定要跟页面编码一致


如果以上都对了,那就不会有问题了。

2 页面后台发送数据乱码

页面提交到后台,要么是form 表单,要么是ajax .

一般出现乱码的情况都是页面编码跟后台编码不一致造成,页面是utf-8 ,后台是utf-8.那么后台设置
request.setCharacterEncoding("uft-8")
以后就不会乱码。

如果页面是gbk或其他形式,那么光靠后台request的设置是没有左右的。

用ajax,或者jquery 的ajax() 提交话,它默认是给你的数据做了encodeURIComponent(data);
他是用的utf-8的编码方式,在页面上,自己提交中文数据的时候还需要手动写一次,也就是2次encodeURIComponent(data);

然后在后台
URLDecoder.decode(content, "utf-8");
解码。这样来解决乱码的问题。

附上点代码
function submitContent(){
			var content = $("#txt").val();
			var newcon = encodeURIComponent(content);
                        //post 提交方式
			$.post("<%=basePath%>pkg_updatePage",
				{ rootpath: allPath, content: newcon },
   				function(data){
					var ll = confirm("are you sure?");
					if(ll==true){
	    			
					}else{
						return;
					}
    			 
   		});
		}


数据比较大的时候一定要用post .而不能用get get传输数据最大的长度约2k。超过就会直接返回请求错误。
  还见过一些这样的错误 (错误写法):
	var allPath ;
		function geteditData(name){
			var path =rootPath+name;
			allPath = path;
			$.ajax({  
                      async: false,  
                      cache: false,  
                      type:"POST",   //post!
                      dataType: "text",
                      contentType:"application/x-www-form-urlencoded;charset=gbk",
                      url: "<%=basePath%>pkg_readPage?rootpath="+path,  //?xxx=xxx
                      success : function(data){
                    	  //alert(typeof(data));
						  $("#txt").val(data);
                      },
					  error: function(){
                    	  alert("trsData = error")
					  	}	
                       });
				}


url 后面?xxx=xx 其实还是用的是get 方式,post 的争取写法应该给个data参数!

java 接受参数
  //更新文件
	    public String updatePage() throws UnsupportedEncodingException{
	    	request.setCharacterEncoding("gbk");
	    	String fiePath = request.getParameter("rootpath");
	    	String content = request.getParameter("content");
	    	String newcontent=null;
	    	try {
//编码	    		
newcontent = URLDecoder.decode(content, "utf-8");
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
			} 
	    	
	    	FileWriter fw;
			try {
				fw = new FileWriter(new File(fiePath));
				fw.write(newcontent);
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			System.out.println("更新成功");
			return null;
	    }


如此检查 防止乱码!
分享到:
评论

相关推荐

    struts2乱码与json插件(1)

    在这个主题中,“struts2乱码与json插件”主要关注两个方面:字符编码问题和JSON数据交互。 **字符编码问题** 在开发web应用时,乱码问题经常出现,尤其是在处理用户输入或显示非ASCII字符时。Struts2框架默认使用...

    struts2_json_jquery_集成详解.docx

    2. **中文乱码**:在Tomcat的server.xml中配置URIEncoding="UTF-8",确保中文字符正确编码。 这个集成过程展示了如何使用Struts2、JSON和jQuery实现前后端交互,创建一个简单的用户登录功能。通过AJAX,用户输入的...

    Ajax中responseText返回的是一个页面而不是一个值

    自己在struts2中的写好了业务逻辑用response返回的内容却是... 您可能感兴趣的文章:ajax的responseText乱码的问题的解决方法jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXMLAjax request response 乱码解决

    Jquery、Ajax、Struts2完成定时刷新的方法

    在这种场景下,我们可以利用JavaScript库JQuery、异步数据传输技术Ajax以及MVC框架Struts2来协同工作,创建一个定时刷新的功能。以下是详细步骤和相关知识点的解释: 1. **导入jQuery库**: 在HTML文档中,我们...

    JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册

    在本文中,我们将会探讨如何通过JQuery、Ajax、Struts2和Hibernate框架的整合实现一个完整的登录注册功能。这一过程涉及前后端的开发与配置,包括前端页面的搭建、后端逻辑的实现以及前后端之间的交互。在开发环境的...

    jQuery uploadify上传文件(JAVA版+Struts2即时预览效果)

    在本文中,我们将深入探讨如何在Java环境下,结合Struts2框架和jQuery的uploadify插件实现文件上传功能,特别是解决中文乱码问题。这个功能对于任何需要用户交互式上传内容的Web应用都是至关重要的。 首先,jQuery ...

    struts2 spring hibernate ssh整合实例

    在这个实例中,我们不仅实现了SSH框架的基础整合,还解决了中文上传和下载时可能出现的乱码问题,并引入了基本的AJAX功能来处理JSON数据,提升了用户体验。 1. **Struts2**:Struts2作为MVC(Model-View-Controller...

    Jquery通过JSON和Struts的Action交互[参照].pdf

    在SSH(Struts2、Spring、Hibernate)架构的项目中,使用jQuery与后台进行交互是常见的做法,特别是在处理异步请求时。本示例主要介绍了如何利用jQuery通过JSON与Struts2的Action进行数据交换,从而实现前端与后端的...

    jars-struts2.3

    首先,Struts2.3.24是Struts2的一个稳定版本,它修复了一些已知问题,包括描述中提到的datetimepicker乱码问题。DateTimePicker通常用于在Web应用中提供用户友好的日期和时间选择界面,而乱码问题可能会影响用户体验...

    解决ajax回调函数返回的字符串乱码问题

    为了解决AJAX回调函数返回的字符串乱码问题,开发者可以在服务器端设置响应内容类型和字符编码,以确保数据的正确传输和解析。根据提供的文件内容,这里涉及到一个关键的操作步骤: 1. 在服务器端,无论是使用...

    精通Java Web整合开发(JSP+AJAX+Sturts+Hibernate)

    charset=UTF-8" %&gt;`来设定默认的字符编码,避免了乱码问题。 4. **分离Java代码和展示逻辑**:通过使用JSP2.0的`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`等指令,可以更好地实现模型-视图-控制器(MVC)设计模式。 **...

    jquery 自动提示

    本文将深入探讨如何使用jQuery实现下拉框的自动提示功能,并解决中文乱码问题,同时结合Java后端进行讲解。 一、jQuery自动提示功能实现 1. HTML结构:首先,我们需要一个输入框(input)用于用户输入查询内容,以及...

    java财务系统源代码

    前后台架构: 1、java语言(jdk1.5)、struts1.2.9、hibernate3.2.6.ga、spring2.0.8 2、前台:主要使用了轻量级的ajax开发框架jQuery,使用jQuery很轻松的降低了服务器压力提高了用户体验并且代码容易维护,尤其是...

    Jsp动态显示服务器时间

    需要注意的是,在输出当前时间之前,需要设置响应的字符编码,以避免乱码问题。 四、Struts2.xml 配置文件 在 Struts2 框架中,我们需要在 Struts2.xml 配置文件中配置 action,以便将请求映射到对应的 action 中...

    在线视频分享网站数据库设计.docx

    参考文献中的学位论文和教程提供了进一步的在线视频网站开发的理论基础和技术实践,如SSH(Struts、Spring、Hibernate)框架的使用、Web标准化设计以及PHP、Ajax和jQuery的结合应用。 总的来说,这个在线视频分享...

    SSH项目的实现步骤.doc

    以上就是SSH项目的基本实现步骤,实际开发中可能还需要配置Spring来管理依赖,实现事务控制,以及使用其他相关技术如Ajax、jQuery等增强用户体验。同时,注意进行单元测试和集成测试,确保各个组件的正确性和整个...

    java面试复习大纲

    4. Spring MVC:理解Spring MVC的工作流程、与Struts2的区别、处理乱码问题和组件扩展。 5. MyBatis:比较MyBatis与JDBC和Hibernate的优缺点,掌握MyBatis的配置和使用。 脚本和数据库: 1. JavaScript:掌握...

    Java面试重要知识点复习大纲.pdf

    4. **SpringMVC**:学习其工作流程,对比Struts2,解决乱码问题,熟悉组件扩展。 5. **MyBatis**:对比JDBC和Hibernate,理解动态SQL,掌握XML和注解的映射方式。 **四、脚本** 1. **JavaScript**:了解核心对象,...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

Global site tag (gtag.js) - Google Analytics