\u5b57\u7b26 字符转换 (Unicode字符与中文的相互转化)

48 篇文章 0 订阅

C#:



工具下载


示例:

private void button1_Click(object sender, EventArgs e)
{
    String value = textBox1.Text;

    if (value.Contains("\\u")) 
        value = UnicodeConverter.ToChinese(value);          // Unicode字符转化为中文
    else value = UnicodeConverter.ToUnicode(textBox1.Text); // 中文转化为Unicode字符

    textBox1.Text = value;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace UnicodeStringTool
{
    /// <summary>
    /// 此类用于实现Unicode字符与中文字符的相互转换
    /// </summary>
    class UnicodeConverter
    {
        /// <summary>
        /// 将中文字符串转化为Unicode串
        /// </summary>
        public static String ToUnicode(String str)
        {
            String tmp = "";

            foreach (char C in str)
            {
                if (isChinese(C)) tmp += "\\u" + ToString(C, 16);   // 将中文字符转化为Unicode串
                else tmp += C;
            }
            return tmp;
        }

        /// <summary>
        /// 将Unicode串转化为中文字符串
        /// </summary>
        public static String ToChinese(String str)
        {
            String tmp = str;

            Regex regex = new Regex("\\\\u[0-9a-fA-F]{4}", RegexOptions.IgnoreCase);
            MatchCollection collection = regex.Matches(tmp);
            foreach (Match match in collection)
            {
                String hexStr = match.Value.Substring("\\u".Length); // 获取16进制串
                String C = ToChar(match.Value, 16).ToString();
                tmp = tmp.Replace(match.Value, C);
            }

            return tmp;
        }


        // 相关功能函数
        // -----------------------------------------------------------------

        // 判断字符C是否是中文字符
        public static bool isChinese(char C)
        {
            // 中文字符范围
            return 0x4e00 <= C && C <= 0x9fbb;
        }

        // 将数值num转化为radix进制表示的字符串, 2 <= radix <= 36
        public static String ToString(int num, int radix = 10)
        {
            String Str = "";
            while (num > 0)
            {
                int remainder = num % radix;    // 取余数
                num = num / radix;              // 取商

                Str = ToChar(remainder) + Str;  // 将各位余数,依次转化为对应进制字符
            }
            return Str;
        }

        // 将数值n转化为字符,0 <= n <= 35,依次转化为字符0-9a-z;
        // 最大可表示36进制数
        public static char ToChar(int n)
        {
            n = n % 36;

            if (n < 10) n += '0';
            else n += 'a' - 10;

            return (char)n;
        }


        // 将字符0-9a-z依次转化为数值0-35
        public static int ToInt(char C)
        {
            if (C > '9') return C - 'a' + 10;
            else return C - '0';
        }

        // 将字符串radix进制的串str转化为字符
        public static char ToChar(String str, int radix)
        {
            int n = 0;

            foreach (char C in str)
            {
                n = n * radix + ToInt(C);
            }

            return (char)n;
        }

        // -----------------------------------------------------------------

    }
}

java:

\u55\u5b57\u7b26
U字符

/** ChineseCharacterTransform.java: ----- 2016-9-20 下午3:49:51 wangzhongyuan */
public class ChineseCharacterTransform
{
	public static void main(String[] args)
	{
		String str = "U字符";
		String Ustr = to_U_Str(str);
		System.out.println(Ustr);				// 转化为U字符
		
		Ustr = "\\u55\\u5b57\\u7b26";
		System.out.println(UStr_2_Str(Ustr));	// 转化为表示的文本
	}
	
	/* 将字符串转化为\\u形式的字符串,如: "U字符" -> "\\u55\\u5b57\\u7b26" ;U字符为字符串中每个字符的16进制信息 */
	public static String to_U_Str(String str)
	{
		String tmp = "";
		
		for (char C : str.toCharArray())
			// 获取所有字符
			tmp += "\\u" + Integer.toHexString(C);		// 将每个字符的的值,转化为16进制字符串
		
		return tmp;
	}
	
	/* 将U字符转化为其表示的字符串, 如: "\\u55\\u5b57\\u7b26" -> "U字符" ;按\\u分割,依次转化为对应字符*/
	public static String UStr_2_Str(String Ustr0)
	{
		String Ustr = Ustr0;
		
		int S = 0, E = 0;
		String C = "", Value = "";
		
		while (Ustr.contains("\\u"))
		{
			S = Ustr.indexOf("\\u") + "\\u".length();	
			E = Ustr.indexOf("\\u", S);
			if (E == -1) E = Ustr.length();
			
			if (E > S)
			{
				C = Ustr.substring(S, E);
				if (C.length() > 4) C = C.substring(0, 4);
				Value = (char) Integer.parseInt(C, 16) + "";
				
				Ustr = Ustr.replace("\\u" + C, Value);
			}
		}
		
		return Ustr;
	}
}

工具源码下载

开源地址


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值