• Unity中对输入的字符进行Unicode转码,并转回正常字符串 以及 GB2312转UTF-8 MD5码的转换


    最近有个小的新需求,就是需要在程序中对Unicode进行转码.. 网上也有各种大神的教程..

    https://blog.csdn.net/u011511086/article/details/72865006/

    然后我这里就模仿这个大神,做了一个小demo.. 源码如下...

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    using System.Text;
    using UnityEngine.UI;
    using System.Security.Cryptography;
    
    public class UnCodeTest : MonoBehaviour
    {
    	Button btn1;
    	Button btn2;
    	InputField iField1;
    	InputField iField2;
    
    	void Start ()
    	{
    		btn1 = transform.Find ("Button1").GetComponent <Button> ();
    		btn2 = transform.Find ("Button2").GetComponent <Button> ();
    		iField1 = transform.Find ("InputField1").GetComponent <InputField> ();
    		iField2 = transform.Find ("InputField2").GetComponent <InputField> ();
    
    		btn1.onClick.AddListener (delegate() {
    			string temp = iField1.text;
    			string debug1 = StringToUnicode (temp);
    			Debug.Log ("debug1 = " + debug1);
    			string debug2 = UnicodeToString (debug1);
    			Debug.Log ("debug2 = " + debug2);
    		});
    
    		btn2.onClick.AddListener (delegate() {
    			string temp = iField1.text;
    			string debug1 = GB2312ToUTF8 (temp);
    			Debug.Log ("debug1 = " + debug1);
    			string debug2 = UTF8ToGB2312 (debug1);
    			Debug.Log ("debug2 = " + debug2);
    
    			string temp2 = iField2.text;
    			string debug3 = GetMD532 (temp2);
    			Debug.Log ("debug3 = " + debug3);
    		});
    	}
    
    	/// <summary>  
    	/// 字符串转为UniCode码字符串  
    	/// </summary>  
    	/// <param name="s"></param>  
    	/// <returns></returns>  
    	public static string StringToUnicode (string inputText)
    	{
    		char[] charBuffer = inputText.ToCharArray ();
    		byte[] buffer;
    		StringBuilder stringBuilder = new StringBuilder ();
    		for (int i = 0; i < charBuffer.Length; i++) {
    			buffer = System.Text.Encoding.Unicode.GetBytes (charBuffer [i].ToString ());
    			stringBuilder.Append (string.Format ("\u{0:X2}{1:X2}", buffer [1], buffer [0]));
    		}
    		return stringBuilder.ToString ();
    	}
    
    	/// <summary>  
    	/// Unicode字符串转为正常字符串  
    	/// </summary>  
    	/// <param name="srcText"></param>  
    	/// <returns></returns>  
    	public static string UnicodeToString (string srcText)
    	{
    		string descripeText = "";
    		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), System.Globalization.NumberStyles.HexNumber).ToString ());
    			bytes [0] = byte.Parse (int.Parse (str.Substring (2, 2), System.Globalization.NumberStyles.HexNumber).ToString ());
    			descripeText += Encoding.Unicode.GetString (bytes);
    		}
    		return descripeText;
    	}
    
    	/// <summary>
    	/// GB2312 转 UTF-8
    	/// </summary>
    	/// <returns>The b2312 to UT f8.</returns>
    	/// <param name="srcText">Source text.</param>
    	public static string GB2312ToUTF8 (string srcText)
    	{
    		Encoding utf8;
    		Encoding gb2312;
    		utf8 = Encoding.GetEncoding ("UTF-8");
    		gb2312 = Encoding.GetEncoding ("GB2312");
    		byte[] GB = gb2312.GetBytes (srcText);
    		GB = Encoding.Convert (gb2312, utf8, GB);
    		return utf8.GetString (GB);
    	}
    
    	/// <summary>
    	/// UTF-8 转 GB2312 
    	/// </summary>
    	/// <returns>The f8 to G b2312.</returns>
    	/// <param name="srcText">Source text.</param>
    	public static string UTF8ToGB2312 (string srcText)
    	{
    		byte[] utf = Encoding.GetEncoding ("UTF-8").GetBytes (srcText);
    		utf = Encoding.Convert (Encoding.GetEncoding ("UTF-8"), Encoding.GetEncoding ("GB2312"), utf);
    		return Encoding.GetEncoding ("GB2312").GetString (utf);
    	}
    
    	/// <summary>
    	/// MD5码
    	/// </summary>
    	/// <returns>The M d532.</returns>
    	/// <param name="content">Content.</param>
    	public static string GetMD532 (string content)
    	{
    		string cl = content;
    		StringBuilder pwd = new StringBuilder ();
    		MD5 md5 = MD5.Create ();//实例化一个md5对像
    		// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
    		byte[] s = md5.ComputeHash (Encoding.UTF8.GetBytes (cl));
    		// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
    		for (int i = 0; i < s.Length; i++) {
    			// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
    			pwd.Append (s [i].ToString ("X2"));
    			//pwd = pwd + s[i].ToString("X");
    		}
    		return pwd.ToString ();
    	}
    }
    


    IField2 中对 InputField 中的属性更改,给他设置为Password 参考如图 

    属性设置如右图 : 

    InputField  教程如下:

    https://www.cnblogs.com/jiangyuzhen/p/7149484.html?utm_source=itdadao&utm_medium=referral

    输入参数如下:

    打印信息如下:    u8FD9u662Fu4E00u4E2Au6D4Bu8BD5

    Unicode转码网址如下 : http://tool.chinaz.com/tools/unicode.aspx  MD5转码网址:http://www.cmd5.com/

    这个时候,转码出来的打印信息...

  • 相关阅读:
    Android 5.0 + IDA 6.8 调试经验分享
    UVA 10003
    欧拉项目010:2000000以内的素数和
    Intellij IDEA 配置Subversion插件
    Intellij IDEA 配置Subversion插件时效解决方法
    javascript 关键字不能作为变量来使用
    JavaScript 闭包(个人理解)
    启动IntelliJ IDEA 2016报错:cannot start under Java 1.7 : Java 1.8 or later is required 解决办法
    jquery easyui tree异步加载子节点
    10.2.1itools导入不了歌曲
  • 原文地址:https://www.cnblogs.com/jbw752746541/p/9430304.html
Copyright © 2020-2023  润新知