惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
V
Visual Studio Blog
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
D
Docker
MyScale Blog
MyScale Blog
小众软件
小众软件
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】

博客园 - fatrick

媒体网关在OCS系统架构中的作用 图文详解配置ocs边缘服务器 实战部署UC平台(OCS VOIP GW and Exchange 2007) OCS服务器Ports and Protocols OCS发待办事宜 ActiveDirectory获取用户 增强SEO的div+css命名规则 WEB网站大数据量的性能解决方案 mapxtreme2005 改变选中的图元样式 Mapxtreme2005 两点之间画直线 mapxtreme2005 创建各种样式 MapxTreme2005 画扇区 MapXtreme 2005 基础代码 MapXtreme创建本地TAB文件 - fatrick - 博客园 如何在DataGrid里面产生滚动条 [转载]关于项目管理的一点体会 [IE&FireFox兼容]JS对select操作 个人网站建设八部曲 FLV Player下载
帮助解决网页和JS文件中的中文编码问题的小工具
fatrick · 2007-11-06 · via 博客园 - fatrick

在JS文件中直接写入一些双字节字符,有时会引发javascript编码错误,在DateChooser控件中就出现过这样的问题,现在一般的较安全的解决方法是把中文字符串转换成类似于"\u5c0f\u5bd2"这样的形式写到JS文件中,下面的代码就是实现双字节的字符和Big endian Unicode之间的相互转换。

 1    /**//// <summary>
 2    /// 将双字节字符转化成能更好的在网页和JS中使用的BigEndianUnicode
 3    /// </summary>

 4    public abstract class Class2
 5    {
 6
 7        public static void Main()
 8        {
 9            string test = "12,农民農民";
10            string entext = EncodingBigEndianUnicode(test);
11            WL(test);
12            WL(entext);
13            WL(DecodingBigEndianUnicode(entext));
14            RL();
15        }

16        public static string DecodingBigEndianUnicode(string encodedString)
17        {
18            System.Text.RegularExpressions.Regex regUnicode = new System.Text.RegularExpressions.Regex(@"\\u(?<1>[a-zA-Z0-9]{2})(?<2>[a-zA-Z0-9]{2})");
19            System.Text.RegularExpressions.MatchCollection mc = regUnicode.Matches(encodedString);
20            string s = string.Empty;
21            foreach(System.Text.RegularExpressions.Match m in mc)
22            {
23                byte b1 = byte.Parse(m.Groups[1].Value,System.Globalization.NumberStyles.HexNumber);
24                byte b2 = byte.Parse(m.Groups[2].Value,System.Globalization.NumberStyles.HexNumber);
25                s += System.Text.Encoding.BigEndianUnicode.GetString(new byte[]{b1,b2});
26            }

27            return s;
28        }

29        
30        public static string EncodingBigEndianUnicode(string text)
31        {
32            string s = string.Empty;
33            for(int i = 0 ; i < text.Length ; i ++)
34            {
35                string s1 = text.Substring(i,1);
36                byte[] bs = System.Text.Encoding.BigEndianUnicode.GetBytes(s1);
37                s1 = @"\u";
38                foreach(byte b in bs)
39                {
40                    string s2 = b.ToString("x");
41                    if(s2.Length == 1)
42                        s2 = "0" + s2;
43                    s1 += s2;
44                }

45                s += s1;
46            }

47            return s;
48        }

49        Helper methodsHelper methods
67    }