zoukankan
html css js c++ java
帮助解决网页和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
}
查看全文
相关阅读:
php -- 读取大文件
php header函数下载文件实现代码
HTTP HEADER 详解
linux -- 进程管理和作业控制
linux -- at命令
Binary String Matching
括号匹配
ASCII码排序
快捷键
ubuntu14的unity desktop显示异常
原文地址:https://www.cnblogs.com/think/p/305590.html
最新文章
ARES
一个美国小券商的生存之道Tradestation
量化平台
解码美国传奇网络券商:TradeStation
apk反编译
证券公司需在主办存管银行开立法人资金交收过渡账户用
证券公司在存管银行开立客户交易结算资金汇总账户
交易系统解析(八)证券公司与基金公司系统综述
基金与信托
碎股的处理
热门文章
.NET中的程序集(Assembly)
pandas
FT厂商
什么是交易当中的阿尔法和贝塔?
集合竞价算法示
linux -- ubuntu dash bash
javascript -- js正则表达式
jquery -- jquery控制只能输入数字和小数点
linux -- ubuntu修改IP地址、网关、dns
linux -- 添加、修改、删除路由
Copyright © 2011-2022 走看看