using system;
using system.text;///
/// author:stone_w
/// date:2010.12.23
/// desc:宽字符编码和解码
///
public class codewidthchartutility
{
public codewidthchartutility() { }// 无需转码的字符
private static string nonencodingchats = "abcdefghijklmnopqrstuvwxyz0123456789`!@#$%^&*()_+|-=,./;"[]{}:<>?";#region 判断需要转换的字符
///
/// 判断需要转换的字符
///
/// 判断字符
///bool
private static bool istowindthchart(char charvalue)
{
nonencodingchats = nonencodingchats.toupper() + nonencodingchats.tolower();
return nonencodingchats.indexof(charvalue) == -1;
}
#endregion#region 宽字符编码
///
/// 宽字符编码
/// 1.编码后 有js控制 浏览器会自动解析[js无需解码]
/// 2.后台控制xxx.innerhtml=宽字符 会原样输出宽字符串[后台控制需要手动解析]
///
/// 需要编码的字符串
///编码后的宽字符串
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 宽字符解码
///
/// 宽字符解码
/// 1.后台才需要手动解码
/// 2.js 控制的浏览器会自动解码宽字符
///
/// 宽字符串
///一般能看懂的字符
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}
在做jsonp传递的时候遇到一个问题,当有特殊字符或中文的时候就会导致数据错误或者是乱码,刚开始有js的编码和解码和正则,都比较麻烦,现在找到了一种合适的解决方案,宽字符编码,js端会自动解析,能处理以上问题,以下是自己封装的通用类。
http://m.bbyears.com/aspjiaocheng/28528.html
推荐访问:测速 藏宝阁 菜鸟教程 创客贴 草料二维码 cctv5 csdn cnki colg