csrf-token_c# 宽字符编码和解码通用类

时间:2016-11-24  来源:脚本编码  阅读:

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端会自动解析,能处理以上问题,以下是自己封装的通用类。

csrf-token_c# 宽字符编码和解码通用类

http://m.bbyears.com/aspjiaocheng/28528.html

推荐访问:测速 藏宝阁 菜鸟教程 创客贴 草料二维码 cctv5 csdn cnki colg
相关阅读 猜你喜欢
本类排行 本类最新