宽字符编码和解码通用类[CodeWidthChartUtility]

简介:   在做jsonp传递的时候遇到一个问题,当有特殊字符或中文的时候就会导致数据错误或者是乱码,刚开始有js的编码和解码和正则,都比较麻烦,现在找到了一种合适的解决方案,宽字符编码,js端会自动解析,能处理以上问题,以下是自己封装的通用类。

  在做jsonp传递的时候遇到一个问题,当有特殊字符或中文的时候就会导致数据错误或者是乱码,刚开始有js的编码和解码和正则,都比较麻烦,现在找到了一种合适的解决方案,宽字符编码,js端会自动解析,能处理以上问题,以下是自己封装的通用类。

代码
 
  
using System;
using System.Text;

/// <summary>
/// author:Stone_W
/// date:2010.12.23
/// desc:宽字符编码和解码
/// </summary>
public class CodeWidthChartUtility
{
public CodeWidthChartUtility() { }

// 无需转码的字符
private static string NonEncodingChats = " abcdefghijklmnopqrstuvwxyz0123456789`!@#$%^&*()_+|-=\\,./;'[]{}:<>? " ;

#region 判断需要转换的字符
/// <summary>
/// 判断需要转换的字符
/// </summary>
/// <param name="charValue"> 判断字符 </param>
/// <returns> bool </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 name="StrValue"> 需要编码的字符串 </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 name="WidthStr"> 宽字符串 </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

}

 

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
数据可视化 数据管理 数据处理
编码集的作用?
编码集的作用?
|
7月前
|
中间件 数据格式
中间件数据格式文本与二进制之间的转换
中间件数据格式文本与二进制之间的转换
44 2
编码细节引起的思考
小编感悟:初始菜鸟的我们,在运用封装好的方法时,不仅要学习如何使用,更要学习封装的方法中还有什么东西,最后还要学习对应的方法是如何封装起来的,知识只有这样的学习才能够让自己变得更加强大。
AVI格式视频文件编码格式缺少编码解释器且该项目的编码格式不受支持(0xc00d5212错误)
AVI格式视频文件编码格式缺少编码解释器且该项目的编码格式不受支持(0xc00d5212错误)
3173 0
AVI格式视频文件编码格式缺少编码解释器且该项目的编码格式不受支持(0xc00d5212错误)
|
存储 SQL 编解码
base64编码底层转换规则举例解读
base64编码底层转换规则举例解读
270 0
base64编码底层转换规则举例解读
【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )(四)
【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )(四)
206 0
【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )(四)
【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )(一)
【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )(一)
215 0
【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )(一)
|
Web App开发 Java 人机交互
阿里云RPA 4.0编码模式详解
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务,这种人和计算体系之间交流的过程就是编程,而RPA的编码模式就是这种编程人机交互模式。
阿里云RPA 4.0编码模式详解
|
Android开发 Java 分布式计算

热门文章

最新文章