帮助解决网页和JS文件中的中文编码问题的小工具
2005-12-27 13:17
926 查看
在JS文件中直接写入一些双字节字符,有时会引发javascript编码错误,在DateChooser控件中就出现过这样的问题,现在一般的较安全的解决方法是把中文字符串转换成类似于"\u5c0f\u5bd2"这样的形式写到JS文件中,下面的代码就是实现双字节的字符和Big endian Unicode之间的相互转换。
public abstract class Class2
{
public static void Main()
{
string test = "12,农民農民";
string entext = EncodingBigEndianUnicode(test);
WL(test);
WL(entext);
WL(DecodingBigEndianUnicode(entext));
RL();
}
public static string DecodingBigEndianUnicode(string encodedString)
{
System.Text.RegularExpressions.Regex regUnicode = new System.Text.RegularExpressions.Regex(@"\\u(?<1>[a-zA-Z0-9]{2})(?<2>[a-zA-Z0-9]{2})");
System.Text.RegularExpressions.MatchCollection mc = regUnicode.Matches(encodedString);
string s = string.Empty;
foreach(System.Text.RegularExpressions.Match m in mc)
{
byte b1 = byte.Parse(m.Groups[1].Value,System.Globalization.NumberStyles.HexNumber);
byte b2 = byte.Parse(m.Groups[2].Value,System.Globalization.NumberStyles.HexNumber);
s += System.Text.Encoding.BigEndianUnicode.GetString(new byte[]{b1,b2});
}
return s;
}
public static string EncodingBigEndianUnicode(string text)
{
string s = string.Empty;
for(int i = 0 ; i < text.Length ; i ++)
{
string s1 = text.Substring(i,1);
byte[] bs = System.Text.Encoding.BigEndianUnicode.GetBytes(s1);
s1 = @"\u";
foreach(byte b in bs)
{
string s2 = b.ToString("x");
if(s2.Length == 1)
s2 = "0" + s2;
s1 += s2;
}
s += s1;
}
return s;
}
Helper methods#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static string RL()
{
return Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
public abstract class Class2
{
public static void Main()
{
string test = "12,农民農民";
string entext = EncodingBigEndianUnicode(test);
WL(test);
WL(entext);
WL(DecodingBigEndianUnicode(entext));
RL();
}
public static string DecodingBigEndianUnicode(string encodedString)
{
System.Text.RegularExpressions.Regex regUnicode = new System.Text.RegularExpressions.Regex(@"\\u(?<1>[a-zA-Z0-9]{2})(?<2>[a-zA-Z0-9]{2})");
System.Text.RegularExpressions.MatchCollection mc = regUnicode.Matches(encodedString);
string s = string.Empty;
foreach(System.Text.RegularExpressions.Match m in mc)
{
byte b1 = byte.Parse(m.Groups[1].Value,System.Globalization.NumberStyles.HexNumber);
byte b2 = byte.Parse(m.Groups[2].Value,System.Globalization.NumberStyles.HexNumber);
s += System.Text.Encoding.BigEndianUnicode.GetString(new byte[]{b1,b2});
}
return s;
}
public static string EncodingBigEndianUnicode(string text)
{
string s = string.Empty;
for(int i = 0 ; i < text.Length ; i ++)
{
string s1 = text.Substring(i,1);
byte[] bs = System.Text.Encoding.BigEndianUnicode.GetBytes(s1);
s1 = @"\u";
foreach(byte b in bs)
{
string s2 = b.ToString("x");
if(s2.Length == 1)
s2 = "0" + s2;
s1 += s2;
}
s += s1;
}
return s;
}
Helper methods#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static string RL()
{
return Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
相关文章推荐
- 帮助解决网页和JS文件中的中文编码问题的小工具
- 解决myeclipse引用单独的js外部文件时中文编码问题(解决的是js文件本身编码问题)
- 如何解决复制来的js以及css等文件中文乱码问题
- Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
- 解决Java读取properties文件的中文问题的新办法(不使用native2ascii.exe及其他工具)
- jsp+mysql文件上传下载方法比较(解决中文编码问题)
- 简单解决Python文件中文编码问题
- 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)——ubuntu环境设置默认是utf-8,文件编码可使用Encodersoft批量转换
- dom4j写文件的编码(UTF-8)问题(主要指中文)的解决
- ruby 文件中文编码问题 导致passenger start错误的解决方法
- 解决JS外部文件中文注释出现乱码问题
- 【python】中文的输出,打印,文件编码问题解决方法
- 解决VS2005打开js,css等文件,中文都是乱码的问题
- vs2003 js文件编码问题的解决方法
- 不能使用文本编码“简体中文(Mac OS)”来打开文件“**.txt”问题的解决(转)
- 分享一个 jsPDF的简单使用以及中文编码问题的解决
- Eclipse中如.js,或.properties文件中有中文不能保存的问题的解决方法
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- 简单解决Python文件中文编码问题
- sublime text 2中添加gb18030编码的支持(解决安装gbk编码支持后部分中文文件依然乱码的问题)