.net unicode汉字互相转换

【两种方法】.net unicode汉字互相转换

=========================================

//汉字转Unicode编码(ASCII)

private string StringToUnicode(string srcText)

        {

            string dst = "";

            char[] src = srcText.ToCharArray();

            for (int i = 0; i < src.Length; i++)

            {

                byte[] bytes = Encoding.Unicode.GetBytes(src[i].ToString());

                string str = @"\u" + bytes[1].ToString("X2") + bytes[0].ToString("X2");

                dst += str;

            }

            return dst;

        }

//TO汉字 srcText为去除\u之后的4位字符

using System.Globalization;

private string ToCN(string srcText)

        {

            string str = srcText;

            byte[] bytes = new byte[2];

            bytes[1] = byte.Parse(int.Parse(str.Substring(0, 2), NumberStyles.HexNumber).ToString());

            bytes[0] = byte.Parse(int.Parse(str.Substring(2), NumberStyles.HexNumber).ToString());

            return Encoding.Unicode.GetString(bytes);

        }

================================================================
public static string ConvertToGB(string unicodeString)
     {
         string[] strArray = unicodeString.Split(new string[] { @"u" }, StringSplitOptions.None);
         string result = string.Empty;
         for (int i = 0; i < strArray.Length; i++)
         {
             if (strArray[i].Trim() == "" || strArray[i].Length < 2 || strArray.Length <= 1)
             {
                 result += i == 0 ? strArray[i] : @"u" + strArray[i]; continue;
             }
             for (int j = strArray[i].Length > 4 ? 4 : strArray[i].Length; j >= 2; j--)
             {
                 try
                 {
                     result += char.ConvertFromUtf32(Convert.ToInt32(strArray[i].Substring(0, j), 16)) + strArray[i].Substring(j);
                     break;
                 }
                 catch
                 {
                     continue;
                 }
             }
         } return result;
     }  

     public static string ConvertToUnicode(string strGB)
     {
         char[] chs = strGB.ToCharArray(); string result = string.Empty; foreach (char c in chs)
         {
             result += @"u" + char.ConvertToUtf32(c.ToString(), 0).ToString("x");
         }
         return result;
     }
/// <summary>
    /// 普通字符串与UniCode字符串间转换
    /// </summary>
    public static class StringToUniCode
    {
        /// <summary>
        /// 字符串转为UniCode码字符串
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static string StringToUnicode(string s)
        {
            char[] charbuffers = s.ToCharArray();
            byte[] buffer;
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < charbuffers.Length; i++)
            {
                buffer = System.Text.Encoding.Unicode.GetBytes(charbuffers[i].ToString());
                sb.Append(String.Format("//u{0:X2}{1:X2}", buffer[1], buffer[0]));
            }
            return sb.ToString();
        }
        /// <summary>
        /// Unicode字符串转为正常字符串
        /// </summary>
        /// <param name="srcText"></param>
        /// <returns></returns>
        public static string UnicodeToString(string srcText)
        {
            string dst = "";
            string src = srcText;
            int len = srcText.Length / 6;
            for (int i = 0; i <= len - 1; i++)
            {
                string str = "";
                str = src.Substring(0, 6).Substring(2);
                src = src.Substring(6);
                byte[] bytes = new byte[2];
                bytes[1] = byte.Parse(int.Parse(str.Substring(0, 2), NumberStyles.HexNumber).ToString());
                bytes[0] = byte.Parse(int.Parse(str.Substring(2, 2), NumberStyles.HexNumber).ToString());
                dst += Encoding.Unicode.GetString(bytes);
            }
            return dst;
        }
    }
时间: 2024-10-10 19:13:21

.net unicode汉字互相转换的相关文章

.Net(c#)汉字和Unicode编码互相转换

{"Tilte": "\u535a\u5ba2\u56ed", "Href": "http://www.cnblogs.com"} 经常遇到这样内容的json字符串,原来是把其中的汉字做了Unicode编码转换. Unicode编码: 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的一个数字.而一个汉字是由两

FATFS外置UNICODE GBK双向转换码表(转)

源:FATFS外置UNICODE GBK双向转换码表 将UtoG,GtoU双向码表放到存储卡里面实现长文件名,因为FATFS长文件名需要unicode支持, 首先将UtoG.sys,GtoU.sys两个文件放到SD卡根目录,注意,一定要在根目录,并且是短文件名,因为长文件名需要UNICODE支持,此时的FATFS还是不支持长文件名的,但是当初始化UNICODE码表后就可以支持长文件名了. 两个码表下载地址:http://download.csdn.net/detail/cp1300/552673

[Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题

最近研究搜索引擎.知识图谱和Python爬虫比较多,中文乱码问题再次浮现于眼前.虽然市面上讲述中文编码问题的文章数不胜数,同时以前我也讲述过PHP处理数据库服务器中文乱码问题,但是此处还是准备简单做下笔记.方便以后查阅和大家学习. 中文编码问题的处理核心都是--保证所有的编码方式一致即可,包括编译器.数据库.浏览器编码方式等,而Python通常的处理流程是将unicode作为中间转换码进行过渡.先将待处理字符串用unicode函数以正确的编码转换为Unicode码,在程序中统一用Unicode字

unicode 编码在线转换工具--javascript

unicode 编码在线转换工具--javascript 本人在网上搜索,看到有使用javascript做unicode编码转换的,感觉很好玩,所以拿来使用的. 这个功能有目前测试了两种: 1)unicode互相转换,例如\u4e2d\u56fd转换成字符,支持中文和英文: 2)URL编码的解析,例如众所周知的%20是表示空格,还有%24,%33,%44,%62等等: 我相信,只要你试试上面的字符进行解码,你就会知道他们之间关系,如何表示字符,数字,字母. 以上可以直接运行.下面给出相关的JS代

[Python] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题

最近研究搜索引擎.知识图谱和Python爬虫比较多,中文乱码问题再次浮现于眼前.虽然市面上讲述中文编码问题的文章数不胜数,同时以前我也讲述过PHP处理数据库服务器中文乱码问题,但是此处还是准备简单做下笔记.方便以后查阅和大家学习.        中文编码问题的处理核心都是——保证所有的编码方式一致即可,包括编译器.数据库.浏览器编码方式等,而Python通常的处理流程是将unicode作为中间转换码进行过渡.先将待处理字符串用unicode函数以正确的编码转换为Unicode码,在程序中统一用U

Visual C++ unicode and utf8 转换

ATL宏: USES_CONVERSION; W2A A2W CString StringUtil::UTF8_to_UNICODE(const char *utf8_string, int length){    int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, utf8_string, length, NULL, 0);       wchar_t* wszString = new wchar_t[wcsLen + 1];    ::Mult

OC1_汉字拼音转换 练习

// // WordManager.h // OC1_汉字拼音转换 // // Created by zhangxueming on 15/4/27. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import "WordItem.h" #define FILEPATH @"/Users/qianfeng/Downloa

UTF-8编码与Unicode CS2的转换

/* Convert a UTF-8 string into a UCS-2 array. */ void tcstrutftoucs(const char *str, uint16_t *ary, int *np){ assert(str && ary && np); const unsigned char *rp = (unsigned char *)str; unsigned int wi = 0; while(*rp != '\0'){ int c = *(unsi

汉字拼音转换类

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyPinYin { /// /// 汉字拼音转换类 /// public static class PinYinConverter { #region 数组信息 private static int[] pyValue = new int[] { -20319, -20317, -20304, -2029