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

摘要:
最近,一个小的新要求是在程序中对Unicode进行转码。网上还有各种各样的大神教程https://blog.csdn.net/u011511086/article/details/72865006/然后我模仿了这位大神,在这里做了一个小演示;使用System.Collections.Generic;使用Unity

最近有个小的新需求,就是需要在程序中对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 参考如图 Unity中对输入的字符进行Unicode转码,并转回正常字符串 以及 GB2312转UTF-8 MD5码的转换第1张

属性设置如右图 : Unity中对输入的字符进行Unicode转码,并转回正常字符串 以及 GB2312转UTF-8 MD5码的转换第2张

InputField  教程如下:

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

输入参数如下:

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

打印信息如下:    u8FD9u662Fu4E00u4E2Au6D4Bu8BD5

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

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

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

免责声明:文章转载自《Unity中对输入的字符进行Unicode转码,并转回正常字符串 以及 GB2312转UTF-8 MD5码的转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇熟记常见的置信区间的分位数CFileFind类的详解以及应用实例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python基础之字符编码

一 了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后数据丢失 因而需要保存到硬盘上,点击保存按钮,就从内存中把数据刷到了硬盘上。 在这一点上,我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,...

python字符编码

字符编码的转换 编码问题一直是个难以理解的问题,莫名其妙转换来转换去的,程序的结果就能正确输出,最后还是留出一点时间开始理解这个棘手的问题。 python有两种字符串类型,str、unicode,这两者都是basestring的子类 str是字节串,而unicode则是真正意义上的字符串 str可以通过decode()函数转换成unicode; unic...

Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题

在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识。   这个标识在Java读取文件的时候,不会被去掉,而且String.trim()也无法删除。如果用readLine()读取第一行存进String里面,这个String的length会比看到的大1,而且第一个字符就是这个B...

(转)VC++的Unicode编程

一、什么是Unicode  先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H...

前端传参时乱码解决方案

前后端交互时经常会用到这种问题,当传参遇到中文时就头大,各种乱码。 下面就总结了两种乱码的情况并给出解决方案。   还是我们的js的方法: encodeURI() 函数可把字符串作为 URI 进行编码。 API参考http://www.w3school.com.cn/jsref/jsref_encodeuri.asp 1、通过url传参(前端转码两次)...

unicode 与 utf-8

unicode 计算机的世界是二进制的世界,无论文字音频传输存储之时都要落实到二进制上。而起源于西方的计算机技术自然深根于他们的文化,于是最初的ascii码基本只是西方的文字编码集。随着计算机的普及,各个国家各个民族基本都为自己的文字创立了字符集。多而杂的规则为数据的传输交换带来巨大困难。是时候要统一字符集了。 unicode应运而生。unicode旨在为...