`
wuzijingaip
  • 浏览: 329566 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ext ajax 乱码问题

阅读更多
1.提交时用 (在 js 中) escape,其转后如 %u33ea (unicode 码)
2.在后台在把 unicode 码 转为GBK(下面给出可执行类),如果数据库要用iso-8859-1,再用 new String(str.getByte("gbk"),"iso-8859-1") 转一下

js:

	var my_doaddMatrixOutNum = function(){
		Ext.lib.Ajax.defaultPostHeader += ";charset=utf8";
		Ext.Ajax.request({
			// 请求地址
			url : 'misliveaction.do?method=addMatrixOutNum',
			// 提交参数组
			params : {
				matrixname :escape(Ext.get('matrixname').dom.value) ,
				outputnum :Ext.get('outputnum').dom.value ,
				desc:escape(Ext.get('m_desc').dom.value)
			},
			// 成功时回调
			success : function(response, options) {
				ds.reload();
				winf.hide();
				// 获取响应的json字符串
				var responseArray = Ext.util.JSON.decode(response.responseText);
				if (responseArray.success == true) {  
					Cookies.set('Allcard_userName', responseArray.user);

				} else {
				}
			}
		});
	}



action:


		bean.setName(MyString.gbktoIso(
					MyString.Unicode2GBK(name.replace("%", "\\"))
				));
		bean.setUrl_name(outputnum);
		bean.setDescription(MyString.gbktoIso(
				MyString.Unicode2GBK(desc.replace("%", "\\"))
		));
		
		dao.addMatrixOutNum(bean);


转码类:
package com.c.elmer.util.string;

import java.io.UnsupportedEncodingException;

public class MyString {
	
	public static void main(String[] args) {
//		System.out.println(kbToMbOrG("123534",false));
//		System.out.println(0xdcbaa32  );
		System.out.println("hex:"+toHexUnicode("aA.\\u和Windows版、Mac版Chrome一样,Linux版本Chrome的开发主要集中在速度、稳定性和安全性上,还采用了多种开放标准,比如HTML5。当然Chrome for Linux也结合Linux环境对浏览器进行了性能提升,其中包括高度整合了本地GTK主题,此外也对多个可以与操作系统的本地性进行协作的功能进行了调整。Linux版本Chrome的开发获得了开源社区的大力支持,50多位开源贡献者参与了Chromium的开发工作。"));
		System.out.println(GBK2Unicode("發發本直柑和Windows版、Mac版Chrome一样,Linux版本Chrome的开发主要集中在速度、稳定性和安全性上,还采用了多种开放标准,比如HTML5。当然Chrome for Linux也结合Linux环境对浏览器进行了性能提升,其中包括高度整合了本地GTK主题,此外也对多个可以与操作系统的本地性进行协作的功能进行了调整。Linux版本Chrome的开发获得了开源社区的大力支持,50多位开源贡献者参与了Chromium的开发工作。"));
		System.out.println(Unicode2GBK("\\ufeff\\u0061\\u0041\\u002e\\u005c\\u0075\\u548c\\u0057\\u0069\\u006e\\u0064\\u006f\\u0077\\u0073\\u7248\\u3001\\u004d\\u0061\\u0063\\u7248\\u0043\\u0068\\u0072\\u006f\\u006d\\u0065\\u4e00\\u6837\\uff0c\\u004c\\u0069\\u006e\\u0075\\u0078\\u7248\\u672c\\u0043\\u0068\\u0072\\u006f\\u006d\\u0065\\u7684\\u5f00\\u53d1\\u4e3b\\u8981\\u96c6\\u4e2d\\u5728\\u901f\\u5ea6\\u3001\\u7a33\\u5b9a\\u6027\\u548c\\u5b89\\u5168\\u6027\\u4e0a\\uff0c\\u8fd8\\u91c7\\u7528\\u4e86\\u591a\\u79cd\\u5f00\\u653e\\u6807\\u51c6\\uff0c\\u6bd4\\u5982\\u0048\\u0054\\u004d\\u004c\\u0035\\u3002\\u5f53\\u7136\\u0043\\u0068\\u0072\\u006f\\u006d\\u0065\\u0020\\u0066\\u006f\\u0072\\u0020\\u004c\\u0069\\u006e\\u0075\\u0078\\u4e5f\\u7ed3\\u5408\\u004c\\u0069\\u006e\\u0075\\u0078\\u73af\\u5883\\u5bf9\\u6d4f\\u89c8\\u5668\\u8fdb\\u884c\\u4e86\\u6027\\u80fd\\u63d0\\u5347\\uff0c\\u5176\\u4e2d\\u5305\\u62ec\\u9ad8\\u5ea6\\u6574\\u5408\\u4e86\\u672c\\u5730\\u0047\\u0054\\u004b\\u4e3b\\u9898\\uff0c\\u6b64\\u5916\\u4e5f\\u5bf9\\u591a\\u4e2a\\u53ef\\u4ee5\\u4e0e\\u64cd\\u4f5c\\u7cfb\\u7edf\\u7684\\u672c\\u5730\\u6027\\u8fdb\\u884c\\u534f\\u4f5c\\u7684\\u529f\\u80fd\\u8fdb\\u884c\\u4e86\\u8c03\\u6574\\u3002\\u004c\\u0069\\u006e\\u0075\\u0078\\u7248\\u672c\\u0043\\u0068\\u0072\\u006f\\u006d\\u0065\\u7684\\u5f00\\u53d1\\u83b7\\u5f97\\u4e86\\u5f00\\u6e90\\u793e\\u533a\\u7684\\u5927\\u529b\\u652f\\u6301\\uff0c\\u0035\\u0030\\u591a\\u4f4d\\u5f00\\u6e90\\u8d21\\u732e\\u8005\\u53c2\\u4e0e\\u4e86\\u0043\\u0068\\u0072\\u006f\\u006d\\u0069\\u0075\\u006d\\u7684\\u5f00\\u53d1\\u5de5\\u4f5c\\u3002"));
		System.out.println(Integer.parseInt("a",16));
		char a = 'a';
		
		System.out.println(Integer.toHexString((int)a));
		System.out.println( Integer.toHexString((int)"和".charAt(0))  );
		System.out.println("和 UNICODE:U+554A"); 
		System.out.println(Integer.toHexString("和".charAt(0) >> 8 & 0xff) 
				+" === " +Integer.toHexString("和".charAt(0) & 0xff) 
				+"==="+Integer.toHexString("和".charAt(0) & 0xff00)
				+"==="+Integer.toHexString("和".charAt(0) | 0xff)
		); 
		String s = "abcdefghijklmnopqrstuvwxyz";
		System.out.println("=="+String.valueOf(2   *   s.charAt(3)));
//		Object o = new Object();
//		returnAddress 
	}
	
	
	
	/**
	 * 网络流量kb 转为 MB或GB
	 * @param kb
	 * @return
	 */
	public static String kbToMbOrG(String kb,boolean isb){
		String rtnStr = "";
		String type = "B";
		try{
			long kbI = (long)Double.parseDouble(kb);
			if(isb){
				if(kbI >= 1024){
					kbI = Math.round(kbI /1024);
					type = "KB";
				}				
			}
			if(kbI >= 1024){
				kbI = Math.round(kbI /1024);
				type = "MB";
			}
			if(kbI > 1024){
				kbI = Math.round(kbI /1024);
				type = "GB";				
			}
			if(kbI > 1024){
				kbI = Math.round(kbI /1024);
				type = "TB";				
			}
			rtnStr = kbI + "";
		}catch (Exception e) {
			e.printStackTrace();
		}
		return rtnStr+" "+type;
	}

	/**
	 * iso-8859-1转为gbk
	 * @param iso
	 * @return
	 */
	public static String isotoGbk(String iso){
		String gbk = "";
		try {
			gbk = new String(iso.getBytes("iso-8859-1"),"gbk");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return gbk;
	}
	/**
	 * iso-8859-1转为big5
	 * @param iso
	 * @return
	 */
	public static String iso2Big5(String iso){
		String gbk = "";
		try {
			gbk = new String(iso.getBytes("iso-8859-1"),"big5");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return gbk;
	}

	/**
	 * big5转为iso-8859-1
	 * @param iso
	 * @return
	 */
	public static String Big52iso(String iso){
		String gbk = "";
		try {
			gbk = new String(iso.getBytes("big5"),"iso-8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return gbk;
	}
	
	/**
	 * gbk转为iso-8859-1
	 * @param gbk
	 * @return
	 */
	public static String gbktoIso(String gbk){
		try {
			String iso = new String(gbk.getBytes("gbk"),"iso-8859-1");
			return iso;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		return "";
	}
	
	/**
	 * 按指定的码转码
	 * @param str
	 * @param sencd
	 * @param eencd
	 * @return
	 */
	public static String changeEncoding(String str,String sencd,String eencd){
		
		try {
			String rtnstr = new String(str.getBytes(sencd),eencd);
			return rtnstr;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		return "";
		
	}

	public static String toHexUnicode(String str){
		StringBuffer result = new StringBuffer();
		result .append( "\\ufeff");
		for(int i=0;i<str.length();i++){
			char chr1 = (char)str.charAt(i);
			String hex_str = Integer.toHexString((int) chr1);
			if(hex_str.length() == 2){
				hex_str = "00" + hex_str;
			}
			result.append("\\u"+hex_str);
		}
		
		
		return result.toString();
	}
	
	/**
	 * 中文转unicode
	 * @param str
	 * 
	 * @return 反回unicode编码
	 */

	public static String GBK2Unicode(String str) {
		StringBuffer result = new StringBuffer();
		for (int i = 0; i < str.length(); i++) {
			char chr1 = (char) str.charAt(i);
			if (!PropertiesTranslater.isNeedConvert(chr1)) {
				result.append(chr1);
				continue;

			}
			result.append("\\u" + Integer.toHexString((int) chr1));
		}

		return result.toString();

	}

	/**
	 * 
	 * unicode转中文
	 * @param str
	 * 
	 * @return 中文
	 * 
	 */

	public static String Unicode2GBK(String dataStr) {
                  if(dataStr.indexOf("\\u") == -1 ){
			return dataStr;
		}
		int index = 0;

		StringBuffer buffer = new StringBuffer();
		while (index < dataStr.length()) {

			if (!"\\u".equals(dataStr.substring(index, index + 2))) {
				buffer.append(dataStr.charAt(index));
				index++;
				continue;
			}
			String charStr = "";

			charStr = dataStr.substring(index + 2, index + 6);
			
			char letter = (char) Integer.parseInt(charStr, 16);
			
			buffer.append(letter);

			index += 6;
		}
		return buffer.toString();

	}

	public static boolean isNeedConvert(char para) {
		return ((para & (0x00FF)) != para);
	}
	

	/**
	 * gbk转为utf-8
	 * @param gbk
	 * @return
	 */
    public String gbk2utf8(String gbk){   
         String utf8 = "";   
         try {   
             utf8 = new String(gbk2utf8_c(gbk),"UTF-8");   
         } catch (UnsupportedEncodingException e) {   
             e.printStackTrace();   
         }   
         return utf8;   
     }   

     public byte[] gbk2utf8_c(String chenese) {   
         char c[] = chenese.toCharArray();   
         byte[] fullByte = new byte[3 * c.length];   
         for (int i = 0; i < c.length; i++) {   
             int m = (int) c[i];   
             String word = Integer.toBinaryString(m);   

             StringBuffer sb = new StringBuffer();   
             int len = 16 - word.length();   
             for (int j = 0; j < len; j++) {   
                 sb.append("0");   
             }   
             sb.append(word);   
             sb.insert(0, "1110");   
             sb.insert(8, "10");   
             sb.insert(16, "10");   

             String s1 = sb.substring(0, 8);   
             String s2 = sb.substring(8, 16);   
             String s3 = sb.substring(16);   

             byte b0 = Integer.valueOf(s1, 2).byteValue();   
             byte b1 = Integer.valueOf(s2, 2).byteValue();   
             byte b2 = Integer.valueOf(s3, 2).byteValue();   
             byte[] bf = new byte[3];   
             bf[0] = b0;   
             fullByte[i * 3] = bf[0];   
             bf[1] = b1;   
             fullByte[i * 3 + 1] = bf[1];   
             bf[2] = b2;   
             fullByte[i * 3 + 2] = bf[2];   

         }   
         return fullByte;   
     }   

	


}


绝对可行
分享到:
评论

相关推荐

    AJAX中文乱码问题探讨及解决

    AJAX中文问题分为两大类: 1)发送路径中的参数有中文,在服务器段接收参数值是乱码 例如: var url=”a.jsp?name=小李”; xmlHTTP.open (“post”,url,true); 解决办法: 利用javascript的提供的escape()或...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    Extjs Ajax 乱码问题解决方案

    Extjs Ajax乱码问题的出现通常与字符编码的不一致有关,无论是在客户端提交到服务器的数据还是服务器返回给客户端的数据中都可能出现乱码。解决此问题通常需要对编码过程和开发环境进行细致的调整。 首先,了解乱码...

    解决J2EE开发中乱码问题

    J2EE开发中遇到的乱码问题是一个常见的困扰,尤其是在处理中文字符时。本文将详细介绍如何解决这些问题,以一个基于Eclipse 3.3 + MyEclipse 6.0 + Tomcat 5.5的项目为例,该项目采用了Ext、Struts和Hibernate框架。...

    基于ext-core的ajax自动保存功能

    在实际应用中,尤其是涉及在线编辑器的场景,直接使用AJAX提交数据可能会遇到编码、违禁字符和中文乱码等问题。为了解决这些问题,推荐使用form表单提交的方式,因为它能更好地处理这些问题,并且易于与Struts2等...

    Ext 开发指南 学习资料

    碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 A.9. 有关grid的一些小问题 A.9.1. 如何让grid总所有的列都支持排序 A.9.2. 修改一个grid的ColumnModel和...

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

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

    ajax的responseText乱码的问题的解决方法

    总之,Ajax的responseText乱码问题通常与服务器的响应编码设置、浏览器的自动解码以及客户端的处理方式有关。确保服务器正确设置Content-Type和字符编码,客户端正确处理接收到的数据,是避免乱码问题的关键。如果...

    EXT异步提交FORM表单

    - **编码问题**:在处理中文字符时,可能会遇到乱码问题。确保前后端的编码一致,并在需要的地方进行字符集转换。 - **跨域问题**:如果EXT所在的域名与后端服务器的域名不一致,则需要处理跨域问题。可以采用CORS...

    EXT2.0中文教程

    碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的...

    jsp 实现的 EXT Grid 导出excel 例子

    在描述中提到的“中文没有乱码问题”,这表明开发者在处理字符编码时已经做了充分考虑。在JSP和EXT JS的配置中,确保文件编码和数据传输过程中都采用UTF-8编码,可以避免中文乱码。同时,在生成Excel时,也需要确保...

    我的Ajax学习笔记

    13. **编码与解码**:处理乱码问题时,需要正确处理字符编码,例如从ISO-8859-1转为GB2312,但有时适应多种环境可能需要额外工作。 14. **浏览器差异**:IE和Firefox在处理回车、缩进等格式化文本时存在差异,需要...

    ajax传递一个参数具体实现.docx

    对于中文参数的问题,有时可能会遇到编码问题,导致传递的中文字符乱码。这时,我们需要确保服务器和客户端的编码设置一致,并可能需要对数据进行编码。例如,使用`encodeURIComponent`函数对参数进行编码: ```...

    Extjs_前后台数据交互[归类].pdf

    这里需要注意的是,后台需要设置正确的字符编码,以防止中文乱码问题,并且设置响应类型为JSON,以便前端解析。 在ExtJS与ASP.NET或其他后台框架交互时,基本思路是一致的,只是后台处理请求的方式会根据所使用的...

    extjs和struts的技术结合

    11. **Ext JS中文乱码解决方案**:在开发过程中,可能会遇到中文乱码问题,这通常与编码设置有关,需要确保项目编码、服务器编码、浏览器编码一致。 12. **Eclipse中JS中文乱码**:Eclipse作为IDE,其JavaScript...

    windchill学习2

    8. **字符编码问题**:在Web开发中,字符编码是常遇到的问题,如UTF-8、GBK等。正确处理字符编码能确保多语言内容的正确显示,防止乱码出现。 9. **Template**:模板通常指网页设计中的预定义布局,或者在编程中...

    ExtJs增删改查实例,献给初学者(佳家记账)

    如果在浏览器中打开页面时遇到乱码问题,这可能是因为字符编码设置不正确。解决方法是将浏览器的编码设置为UTF-8,这是一种广泛支持的Unicode编码,能确保正确显示多语言字符。 这个实例可能包含以下关键知识点: ...

    DWR入门教材

    在服务器端,`request.setCharacterEncoding("UTF-8")`和`response.setCharacterEncoding("UTF-8")`用于设置字符编码为UTF-8,确保数据传输过程中不会出现乱码问题。通过`request.getParameter("node")`获取请求参数...

    KODExplorer 芒果云-资源管理器

    - 拖动url——创建ext app - 文件管理,树目录变化后(增删改)自动同步到文件列表 - 文件管理,文件列表变化后(增删改)自动同步到树目录 - 中文用户名限制 - 对话框打开关闭动画 - 其他多处优化 ####fix ...

Global site tag (gtag.js) - Google Analytics