C# 中字符串与Unicode相互转化
2009-05-22 10:59
357 查看
private string UnicodeCode2Str(char[] u4)
{
if (u4.Length < 4)
{
throw new Exception("It's not a unicode code array");
}
string str = "0123456789ABCDEF";
char ch = char.ToUpper(u4[0]);
char ch2 = char.ToUpper(u4[1]);
char ch3 = char.ToUpper(u4[2]);
char ch4 = char.ToUpper(u4[3]);
int index = str.IndexOf(ch);
int num2 = str.IndexOf(ch2);
int num3 = str.IndexOf(ch3);
int num4 = str.IndexOf(ch4);
if (((index == -1) || (num2 == -1)) || ((num3 == -1) || (num4 == -1)))
{
throw new Exception("It's not a unicode code array");
}
byte num5 = (byte) (((index * 0x10) + num2) & 0xff);
byte num6 = (byte) (((num3 * 0x10) + num4) & 0xff);
byte[] bytes = new byte[] { num5, num6 };
return Encoding.BigEndianUnicode.GetString(bytes);
}
private string NormalU2C(string input)
{
string str = "";
char[] chArray = input.ToCharArray();
Encoding bigEndianUnicode = Encoding.BigEndianUnicode;
for (int i = 0; i < chArray.Length; i++)
{
char ch = chArray[i];
if (ch.Equals('//'))
{
i++;
i++;
char[] chArray2 = new char[4];
int index = 0;
index = 0;
while ((index < 4) && (i < chArray.Length))
{
chArray2[index] = chArray[i];
index++;
i++;
}
if (index == 4)
{
try
{
str = str + this.UnicodeCode2Str(chArray2);
}
catch (Exception)
{
str = str + @"/u";
for (int j = 0; j < index; j++)
{
str = str + chArray2[j];
}
}
i--;
}
else
{
str = str + @"/u";
for (int k = 0; k < index; k++)
{
str = str + chArray2[k];
}
}
}
else
{
str = str + ch.ToString();
}
}
return str;
}
private string NormalC2U(string input)
{
Encoding bigEndianUnicode = Encoding.BigEndianUnicode;
char[] chArray = input.ToCharArray();
string str = "";
foreach (char ch in chArray)
{
if (ch.Equals('/r') || ch.Equals('/n'))
{
str = str + ch;
}
else
{
byte[] bytes = bigEndianUnicode.GetBytes(new char[] { ch });
str = (str + @"/u") + string.Format("{0:X2}", bytes[0]) + string.Format("{0:X2}", bytes[1]);
}
}
return str;
}
{
if (u4.Length < 4)
{
throw new Exception("It's not a unicode code array");
}
string str = "0123456789ABCDEF";
char ch = char.ToUpper(u4[0]);
char ch2 = char.ToUpper(u4[1]);
char ch3 = char.ToUpper(u4[2]);
char ch4 = char.ToUpper(u4[3]);
int index = str.IndexOf(ch);
int num2 = str.IndexOf(ch2);
int num3 = str.IndexOf(ch3);
int num4 = str.IndexOf(ch4);
if (((index == -1) || (num2 == -1)) || ((num3 == -1) || (num4 == -1)))
{
throw new Exception("It's not a unicode code array");
}
byte num5 = (byte) (((index * 0x10) + num2) & 0xff);
byte num6 = (byte) (((num3 * 0x10) + num4) & 0xff);
byte[] bytes = new byte[] { num5, num6 };
return Encoding.BigEndianUnicode.GetString(bytes);
}
private string NormalU2C(string input)
{
string str = "";
char[] chArray = input.ToCharArray();
Encoding bigEndianUnicode = Encoding.BigEndianUnicode;
for (int i = 0; i < chArray.Length; i++)
{
char ch = chArray[i];
if (ch.Equals('//'))
{
i++;
i++;
char[] chArray2 = new char[4];
int index = 0;
index = 0;
while ((index < 4) && (i < chArray.Length))
{
chArray2[index] = chArray[i];
index++;
i++;
}
if (index == 4)
{
try
{
str = str + this.UnicodeCode2Str(chArray2);
}
catch (Exception)
{
str = str + @"/u";
for (int j = 0; j < index; j++)
{
str = str + chArray2[j];
}
}
i--;
}
else
{
str = str + @"/u";
for (int k = 0; k < index; k++)
{
str = str + chArray2[k];
}
}
}
else
{
str = str + ch.ToString();
}
}
return str;
}
private string NormalC2U(string input)
{
Encoding bigEndianUnicode = Encoding.BigEndianUnicode;
char[] chArray = input.ToCharArray();
string str = "";
foreach (char ch in chArray)
{
if (ch.Equals('/r') || ch.Equals('/n'))
{
str = str + ch;
}
else
{
byte[] bytes = bigEndianUnicode.GetBytes(new char[] { ch });
str = (str + @"/u") + string.Format("{0:X2}", bytes[0]) + string.Format("{0:X2}", bytes[1]);
}
}
return str;
}
相关文章推荐
- C# 中字符串与Unicode相互转化
- C#通讯编程入门--整形、双精度浮点型、字符串与字节型的相互转化
- python 字符串编码 str和unicode 区别以及相互转化 decode('utf-8') encode('utf-8')
- [转]Java 字符串与Unicode的相互转化
- ANSI、UTF-8、UNICODE字符串相互转化
- c#编程指南(十七) 字符串和字节流相互转化
- 数字与字符串相互转化(Unicode)
- c#中文字符串与byte数组互相转化
- java中文字符和特殊字符与unicode相互转化
- C#将字符串转化成流,将流转换成字符串
- js中 字符串与Unicode 字符值序列的相互转换
- Xml字符串与C#对象之间相互转换
- C#汉字-区位码相互转化类
- 【.Net码农】C# List<string>与String字符串相互转换
- 整型数据与字符串类型相互转化的一种实现方法
- C#数字进制间与字符串类型相互转换
- linux 下时间字符串和time_t类型之间的相互转化
- asii和unicode格式字符串之间的相互转换
- flex字符串与日期相互转化
- 简化wince中字符串ansi与unicode相互转化的函数