最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
c# 宽字符编码和解码通用类
时间:2010-12-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端会自动解析,能处理以上问题,以下是自己封装的通用类。
相关文章
- C#复制数组的两种方式及效率比较解读 10-24
- ASP.NET Identity用法解析 10-24
- ASP.NET MVC使用Identity增删改查用户介绍 10-24
- C语言中atoi函数模拟实现介绍 10-18
- .Net反向代理组件Yarp用法介绍 10-10
- .NET使用YARP通过编码方式配置域名转发实现反向代理教程 10-10