c# 宽字符编码和解码通用类

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

}

 

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

时间: 2025-01-12 16:54:31

c# 宽字符编码和解码通用类的相关文章

关于字符编码,你所需要知道的

字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题.这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助. 还是得从ASCII码说起   说到字符编码,不得不说ASCII码的简史.计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理.但由于计算机只识"数",因此人们必须告诉计算机哪个数字来代表哪个特定字符,例如65代表字母'A',66代表字母'B',以此类推.但是计算机之间字符-数字的对应关系必须得一致,否

Python中字符编码简介、方法及使用建议_python

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

Java字符编码解码的实现详解_java

 字符集基础: Character set(字符集)          字符的集合,也就是,带有特殊语义的符号.字母"A"是一个字符."%"也是一个字符.没有内在数字价值,与 ASC II ,Unicode,甚至是电脑也没有任何的直接联系.在电脑产生前的很长一段时间内,符号就已经存在了. Coded character set(编码字符集)          一个数值赋给一个字符的集合.把代码赋值给字符,这样它们就可以用特定的字符编码集表达数字的结果.其他的编码字符

Java base64编码解码工具类

    前几天无意中看到Java中有Base64编码,不解的我去百科了一下,了解了Base64的基本使用和实现原理,于是在空暇时自己手动写了一个,这个类可以完成对字母数字的编码和解码工作,但是对于中文,还没有仔细研究其编码的实现过程.至于什么是Base64,用它来干什么,请移步到:http://zh.wikipedia.org/zh-cn/Base64  下面贴出这个工具类的源代码,供朋友们参考,本人新手写得不好,请用力拍砖: /************************Base64Uti

输出字符缓冲区太小,无法包含解码后的字符,编码 Unicode (UTF-8) 的操作回退

问题描述 调试程序时,出现异常:输出字符缓冲区太小,无法包含解码后的字符,编码Unicode(UTF-8)的操作回退,一头雾水.代码如下FileStreamfsread=newFileStream("123.dat",FileMode.Open,FileAccess.Read);System.Text.Encodingencoding=System.Text.Encoding.UTF8;BinaryReaderbinReader=newBinaryReader(fsread,encod

javascript unescape() escape() 字符编码解码函数

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string)参数 描述 string 必需.要被转义或编码的字符串. 返回值 已编码的 string 的副本.其中某些字符被替换成了十六进制的转义序列 function php教程escape($str) {          $sublen=strlen($str);          $retrunstring="";          for ($i=0;$i<$sub

JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个阳光明媚的周末,一个又一个的周末,周而复始,不断学习,前方的路你可曾看见?随我一起走进技术的世界,流连忘返吧! 一.打印流PrintWriter 打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件 该流提供了打印方法,可以将各种数据类型原样打印 file对象

字符集和字符编码(Charset &amp; Encoding)

--每个软件开发人员应该无条件掌握的知识! --Unicode伟大的创想! 相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"."�????????"?还记得HTTP中的Accept-Charset.Accept-Encoding.Accept-Language.Content-Encoding.Content-Language等消息头字段?这些就是接下来我们要探讨的. 目录: 1.基础知识 2.常用字符集和字符编码 2.1. ASCII字符

字符集和字符编码(Charset &amp;amp; Encoding)_其它综合

相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"."�????????"?还记得HTTP中的Accept-Charset.Accept-Encoding.Accept-Language.Content-Encoding.Content-Language等消息头字段?这些就是接下来我们要探讨的. 目录: 1.基础知识 2.常用字符集和字符编码2.1. ASCII字符集&编码2.2. GBXXXX字符集&编码2.3. BIG5字