做加工都在哪个网站推广,网络营销外包推广,开发平台教程,淘宝网站的建设与运营设计思路在做jsonp传递的时候遇到一个问题#xff0c;当有特殊字符或中文的时候就会导致数据错误或者是乱码#xff0c;刚开始有js的编码和解码和正则#xff0c;都比较麻烦#xff0c;现在找到了一种合适的解决方案#xff0c;宽字符编码#xff0c;js端会自动解析#xff0c;能… 在做jsonp传递的时候遇到一个问题当有特殊字符或中文的时候就会导致数据错误或者是乱码刚开始有js的编码和解码和正则都比较麻烦现在找到了一种合适的解决方案宽字符编码js端会自动解析能处理以上问题以下是自己封装的通用类。 代码 using System;using System.Text;/// summary/// author:Stone_W/// date:2010.12.23/// desc:宽字符编码和解码/// /summarypublic class CodeWidthChartUtility{ public CodeWidthChartUtility() { } // 无需转码的字符 private static string NonEncodingChats abcdefghijklmnopqrstuvwxyz0123456789!#$%^*()_|-\\,./;[]{}:?; #region 判断需要转换的字符 /// summary /// 判断需要转换的字符 /// /summary /// param namecharValue判断字符/param /// returnsbool/returns private static bool IsToWindthChart(char charValue) { NonEncodingChats NonEncodingChats.ToUpper() NonEncodingChats.ToLower(); return NonEncodingChats.IndexOf(charValue) -1; } #endregion #region 宽字符编码 /// summary /// 宽字符编码 /// 1.编码后 有js控制 浏览器会自动解析[js无需解码] /// 2.后台控制xxx.InnerHtml宽字符 会原样输出宽字符串[后台控制需要手动解析] /// /summary /// param nameStrValue需要编码的字符串/param /// returns编码后的宽字符串/returns public static string WidthChartEncoding(string StrValue) { StringBuilder sb new StringBuilder(); foreach (char item in StrValue) { if (IsToWindthChart(item)) // 判断需要转换的字符 { sb.Append(String.Format(\\u{0:x4}, (int)item)); } else { sb.Append(item); } } return sb.ToString(); } #endregion #region 宽字符解码 /// summary /// 宽字符解码 /// 1.后台才需要手动解码 /// 2.js 控制的浏览器会自动解码宽字符 /// /summary /// param nameWidthStr宽字符串/param /// returns一般能看懂的字符/returns public static string WidthChartDecoding(string WidthStr) { StringBuilder sb new StringBuilder(); string[] _ValueList WidthStr.Split(new char[] { \\, u }, StringSplitOptions.RemoveEmptyEntries); for (int i 0; i ! _ValueList.Length; i) { char _ValueChar Convert.ToChar(Convert.ToUInt16(_ValueList[i], 16)); sb.Append(_ValueChar.ToString()); } return sb.ToString(); } #endregion}