日期:2014-05-16  浏览次数:20627 次

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("