runxinzhi.com
首页
百度搜索
帮助解决网页和JS文件中的中文编码问题的小工具
在JS文件中直接写入一些双字节字符,有时会引发javascript编码错误,在DateChooser控件中就出现过这样的问题,现在一般的较安全的解决方法是把中文字符串转换成类似于"\u5c0f\u5bd2"这样的形式写到JS文件中,下面的代码就是实现双字节的字符和Big endian Unicode之间的相互转换。
/**/
///
<summary>
///
将双字节字符转化成能更好的在网页和JS中使用的BigEndianUnicode
///
</summary>
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
}
相关阅读:
拳击游戏(虚函数应用)
虚函数的使用
继承中的二义性归属问题
继承的作用以及在子类中初始化所有数据的方法
Exploring ES2016 Decorators
Storage information for PWA application
浏览器中常见网络协议介绍
vuex所有核心概念完整解析State Getters Mutations Actions
搭建一个webpack微服务器
nodeJS接入微信公众平台开发
原文地址:https://www.cnblogs.com/think/p/305590.html
最新文章
Java 调用emqx 主动删除某个clientid连接
emqx 添加 mysql 插件进行acl验证
Linux安装emqx(含Kernel pid terminated 错误)
Linux安装jmeter压力测试
JLINK通过SW模式下载程序的方法
IIC总线学习基础以及24C02芯片学习(一)
(转)IIC总线工作原理(1)
Altium原理图中利用封装管理器批量修改元器件封装
Altium Designer中各种栅格(grid)的意义
51单片机之串口通信(一)
热门文章
51单片机之串口通信(二)
(转)Altium Designer PCB网络连接方式Port和Net Label详解
51单片机之串口通信(三)
桥堆的参数选择以及滤波电容的选择
tomcat配置及环境搭建
Python学习笔记
新版本的Python问题
执行python文件
动态链表的建立
链表的介绍
Copyright © 2020-2023
润新知