zoukankan      html  css  js  c++  java
  • 《中文防止乱码的万能解决方案》

        相信大家很多都会在JS下面要求输出一段中文的提示,很多时候由于页面的编码问题,经常会出现乱码的现象,每次不得不长时间在这个上面耗费超多的时间,这里我找到一种最好的解决方案,不知道是从那位博客园大侠的博客上面找到的,其实代码很简单,下面大家先来看看代码先:

    using System;
    using System.Collections.Generic;
    ///<summary>
        /// 将双字节字符转化成能更好的在网页和JS中使用的BigEndianUnicode
        /// </summary>
        public abstract class Class2
        {

            public static void Main()
            {
                string test = "参数错误,请重复商品收藏操作。";
                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;
            }
            #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
        }

       上面是他的原文代码,如果谁知道作者的文章地址或者作者本人看到了文章请联系我,呵呵,本文版权并不归我所有的,哈!解决方案,其实只是对中文进行了一次Big5的编码,编码后的中文在Utf-8跟Gb2312下面都能正常的显示。

    作者:Apollo
    出处:http://apollo.cnblogs.com/
    如果您觉得本文对您的学习有所帮助,可通过“微信”或“支付宝”打赏博主,或者点击页面右下角【好文要顶】支持博主。
  • 相关阅读:
    欧几里得算法&&扩展欧几里得算法
    POJ-1006 Biorhythms (生物节律)
    第3周实践项目7 删除链表元素最大值
    第3周实践项目1 顺序表的基本运算
    第三周项目4(2)-顺序表应用 将所有奇数移到所有偶数前面
    第3周实践项目5 -顺序表的应用 拆分单链表
    SDUT-2144 图结构练习——最小生成树
    SDUT-3362 数据结构实验之图论六:村村通公路
    Codeforces Round #616 (Div. 2)题解
    1.29 educational round 81
  • 原文地址:https://www.cnblogs.com/Apollo/p/878319.html
Copyright © 2011-2022 走看看