C# Unicode編碼和中文互轉(zhuǎn)

直接上代碼

//=====================================================
// - FileName:      UnicodeTools 
// - Description:
// - Author:        wangguoqing
// - Email:         wangguoqing@hehemj.com
// - Created:       2018/3/2 17:17:50
// - CLR version:   4.0.30319.42000
// - UserName:      Wang
// -  (C) Copyright 2008 - 2015, hehehuyu,Inc.
// -  All Rights Reserved.
//======================================================

using System;
using System.Text;
/// <summary>
/// Unicode編碼和中文互轉(zhuǎn)
/// 這里的Unicode編碼是Unicode Big Endian (UCS-2 Big Endian)
/// </summary>
class UnicodeTools
{

    /// <summary>
    /// 標(biāo)準(zhǔn)unicode編碼
    /// </summary>
    /// <param name="text"></param>
    /// <returns></returns>
    public static string EncodeString(string text)
    {
        if (string.IsNullOrEmpty(text))
        {
            return string.Empty;
        }
        int len = text.Length;
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < len; i++)
        {
            builder.Append("\\u");
            builder.Append(UShortToHex((ushort)text[i]));
        }
        return builder.ToString();
    }
    /// <summary>
    /// 編碼Unicode
    /// </summary>
    /// <param name="text">原字符串</param>
    /// <returns>unicode編碼</returns>
    public static string EncodeString1(string text)
    {
        if (string.IsNullOrEmpty(text))
        {
            return string.Empty;
        }
        var bytes = Encoding.Unicode.GetBytes(text);
        int len = bytes.Length;
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < len; i += 2)
        {
            builder.Append("\\u");
            builder.Append(bytes[i + 1].ToString("x2"));
            builder.Append(bytes[i].ToString("x2"));
        }
        return builder.ToString();
    }

    public static string EncodeString2(string text)
    {
        if (string.IsNullOrEmpty(text))
        {
            return string.Empty;
        }
        int len = text.Length;
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < len; i++)
        {
            builder.Append("\\u");
            builder.Append(((ushort)text[i]).ToString("x4"));
        }
        return builder.ToString();
    }


    private static char[] UShortToHex(ushort n)
    {
        int num;
        char[] hex = new char[4];
        for (int i = 0; i < 4; i++)
        {
            num = n % 16;

            if (num < 10)
                hex[3 - i] = (char)('0' + num);
            else
                hex[3 - i] = (char)('A' + (num - 10));

            n >>= 4;
        }
        return hex;
    }
    private static char[] UShortToHexE(ushort n)
    {
        var hex = n.ToString("x").ToCharArray();
        return hex;
    }

    public static string DecodeString(string unicode)
    {
        if (string.IsNullOrEmpty(unicode))
        {
            return string.Empty;
        }
        //string[] ls = unicode.Replace("\\", "").Split(new char[]{'u'},StringSplitOptions.RemoveEmptyEntries);
        string[] ls = unicode.Split(new string[] { "\\u" }, StringSplitOptions.RemoveEmptyEntries);
        StringBuilder builder = new StringBuilder();
        int len = ls.Length;
        for (int i = 0; i < len; i++)
        {
            //builder.Append((Char)ushort.Parse(ls[i], System.Globalization.NumberStyles.HexNumber));
            builder.Append(Convert.ToChar(ushort.Parse(ls[i], System.Globalization.NumberStyles.HexNumber)));

        }
        return builder.ToString();
    }

    
    /// <summary>
    /// 這種只能解出標(biāo)準(zhǔn)unicode編碼
    /// </summary>
    /// <param name="unicode"></param>
    /// <returns></returns>
    public static string DecodeString1(string unicode)
    {
        if (string.IsNullOrEmpty(unicode))
        {
            return string.Empty;
        }
        return System.Text.RegularExpressions.Regex.Unescape(unicode);
    }
    
}



測(cè)試

            string s = "天空測(cè)試s";
            Console.WriteLine(UnicodeTools.EncodeString(s));
            Console.WriteLine(UnicodeTools.EncodeString1(s));
            Console.WriteLine(UnicodeTools.EncodeString2(s));
            Console.WriteLine(UnicodeTools.DecodeString(UnicodeTools.EncodeString(s)));
            Console.WriteLine(UnicodeTools.DecodeString(UnicodeTools.EncodeString1(s)));
            Console.WriteLine(UnicodeTools.DecodeString(UnicodeTools.EncodeString2(s)));
            Console.WriteLine(UnicodeTools.DecodeString1(UnicodeTools.EncodeString(s)));
            Console.WriteLine(UnicodeTools.DecodeString1(UnicodeTools.EncodeString1(s)));
            Console.WriteLine(UnicodeTools.DecodeString1(UnicodeTools.EncodeString2(s)));

結(jié)果

結(jié)果.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熟史,一起剝皮案震驚了整個(gè)濱河市愕掏,隨后出現(xiàn)的幾起案子酗电,更是在濱河造成了極大的恐慌攘烛,老刑警劉巖悉抵,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凤薛,死亡現(xiàn)場(chǎng)離奇詭異筒饰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砸讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)界牡,“玉大人簿寂,你說我怎么就攤上這事∷尥觯” “怎么了陶耍?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)她混。 經(jīng)常有香客問我烈钞,道長(zhǎng),這世上最難降的妖魔是什么坤按? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任毯欣,我火速辦了婚禮,結(jié)果婚禮上臭脓,老公的妹妹穿的比我還像新娘酗钞。我一直安慰自己,他們只是感情好来累,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布砚作。 她就那樣靜靜地躺著,像睡著了一般嘹锁。 火紅的嫁衣襯著肌膚如雪葫录。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天领猾,我揣著相機(jī)與錄音米同,去河邊找鬼。 笑死摔竿,一個(gè)胖子當(dāng)著我的面吹牛面粮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播继低,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熬苍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了袁翁?” 一聲冷哼從身側(cè)響起柴底,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钱磅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后似枕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盖淡,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年凿歼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褪迟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡答憔,死狀恐怖味赃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虐拓,我是刑警寧澤心俗,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布蓉驹,位于F島的核電站,受9級(jí)特大地震影響态兴,放射性物質(zhì)發(fā)生泄漏狠持。R本人自食惡果不足惜瞻润,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绍撞。 院中可真熱鬧正勒,春花似錦、人聲如沸傻铣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矾柜。三九已至阱驾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怪蔑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工丧荐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缆瓣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓虹统,卻偏偏與公主長(zhǎng)得像弓坞,于是被迫代替她去往敵國(guó)和親隧甚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程渡冻、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架戚扳。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,724評(píng)論 5 100
  • 1.問:你在測(cè)試中發(fā)現(xiàn)了一個(gè) bug 族吻,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè) bug 帽借,你應(yīng)該怎樣解決。 首先超歌,將問題提...
    qianyewhy閱讀 9,257評(píng)論 4 123
  • 文章來(lái)自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,192評(píng)論 2 126
  • 一砍艾,寫MFC程序的時(shí)候經(jīng)常會(huì)用到CString 字符串類型,只想說難用的一B巍举。最近需要將CString 與 cha...
    米奇小林閱讀 5,100評(píng)論 0 0
  • 我的大學(xué)室友們(一) ——@生椒牛肉 之前答應(yīng)大家要寫寫我的大學(xué)室友們脆荷,因?yàn)樗麄兊目蓯邸⒂哪妹酢⑸踔劣悬c(diǎn)呆萌蜓谋,讓我異...
    生椒牛肉閱讀 2,169評(píng)論 2 5