在做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

}

宽字符编码和解码通用类[CodeWidthChartUtility]相关推荐

  1. 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode...

    原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...

  2. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误. 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法. 看 ...

  3. 字符串工具类、数组工具类、集合工具类、转型操作工具类、编码与解码操作工具类...

    package hjp.smart4j.framework.util;import org.apache.commons.lang3.StringUtils;/*** 字符串工具类*/ public ...

  4. Java(35):Java Base64编码和解码工具类

    Java Base64编码和解码工具类 Base64Util工具类: package com.ciphergateway.utils; import java.io.UnsupportedEncodi ...

  5. 如何解决python中编码错误的问题_【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 对于Python解析器 而Python解析器所干的事情,就是: Python解析器,根据当前的所用的字符串编码类型 此字符串编码类型,是你自己所设置的 不 ...

  6. Java 字符编码与解码

    1.字符编码的发展历程 ①.ASCII 码 因为计算机只认识数字,所以我们在计算机里面的一切数据都是以数字来表示,因为英文字符有限,所以规定使用的字节的最高位是 0,每一个字节都是以 0-127 之间 ...

  7. 前端 javascript 字符编码与解码

    前端 javascript 开发过程中, 有时候会遇到字符串的编码和解码. 面对眼花缭乱的js原生方法, 到底如何选择总是很头大, 在此对常用方法做个小结. escape & unescape ...

  8. URL编码和解码 C++类URL编码和解码使用技巧

    想了解C++类URL编码和解码使用技巧的相关内容吗,在本文为您仔细讲解URL编码和解码的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:URL编码,解码,下面大家一起来学习吧. 在项目开发过 ...

  9. c#字符编码,System.Text.Encoding类,字符编码大全:如Unicode编码、GB18030、UTF-8,UTF-7,GB2312,ASCII,UTF32,Big5

    本页列出来目前window下所有支持的字符编码  ---c#通过 System.Text.Encoding.GetEncodings()获取,里面可以对其进行查询,筛选,对同一个字符,在不同编码进行查 ...

最新文章

  1. Openstack 小知识点
  2. 局部图像描述子——Harris角点检测器
  3. 部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)
  4. some demos
  5. P3870-[TJOI2009]开关【分块】
  6. linux 深度v15,[转载]深度Linux发布 V15.9
  7. python控制步进电机驱动器_树莓派操作案例1-使用python GPIO+TB6612驱动步进电机
  8. oracle 8i漏洞渗透,一次通过Oracle8i入侵系统之旅(组图)
  9. 数字孪生应用白皮书_【研究报告】数字孪生应用白皮书(2020版)
  10. linux内核文件恢复,linux下系统文件恢复
  11. Windows 7 通过无线网卡,模拟Wifi,实现手机,电脑等无线设备共享上网
  12. cpython安装_Cython安装没有找到Python.h文件?
  13. C# 使用Newtonsoft.Json 对象转json字符串,json字符串转对象
  14. Elasticsearch对接Django
  15. @DateTimeFormat 和 @JsonFormat 注解详解
  16. 商业分析师的要求与必备技能
  17. 一次线上的502错误排查问题
  18. Matlab画图如何去掉图形框右边和上边的刻度
  19. uni-app--》如何制作一个APP并使用?
  20. 超级解霸, 远去的豪杰

热门文章

  1. Ansible系列--Copy模块
  2. UVA----10082 WERTYU【字符串】
  3. 关于C生成的汇编与C++生成的汇编在函数名称上的差异
  4. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
  5. [洛谷P1341]无序字母对
  6. 十二赞日志收集与报警系统一览
  7. 分析容灾备份建设需求
  8. 利用Asp.net MVC处理文件的上传下载
  9. 高校学计算机研究生录取分数排名,四川大学计算机学院2018年硕士研究生招生拟录取名单及成绩公示...
  10. mysql 跳表 b 树_简单谈谈Mysql索引与redis跳表