110,538
社区成员
发帖
与我相关
我的任务
分享
static void Main(string[] args)
{
string s = @"\u5357\u7f8e\u89e3\u653e\u8005\u676f";//16进制的一位对应2进制的4位,2位对应2进制的8位,即一个Byte
s = s.Replace(@"\u", "");
char[] buff = new char[s.Length / 4];
for (int i = 0, j = 0; i < s.Length; i += 4, j++)//\u5357=一个16位Char
{
buff[j] = (char)int.Parse(s.Substring(i, 4), System.Globalization.NumberStyles.AllowHexSpecifier);
}
string res = "";
for (int i = 0; i < buff.Length; i++)
{
res += buff[i].ToString();
}
Console.WriteLine(res);//"南美解放者杯"
byte[] bytes = new byte[s.Length / 2];
for (int i = 0, j = 0; i < s.Length; i += 2, j++)//\u5357=两个8位Byte
{
bytes[j] = Byte.Parse(s.Substring(i, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
}
string res2 = Encoding.BigEndianUnicode.GetString(bytes);//Intel CPU使用little-endian(小尾),网络字节流使用大尾
Console.WriteLine(res2);//输出和上面一样
}
string content1 = "\u5357\u7ebd\u5361\u65af\u5c14";
byte[] content = Encoding.Unicode.GetBytes(content1);
//or byte[] content = Encoding.UTF8.GetBytes(content1);
FileStream s = new FileStream(Server.MapPath("~/aaa.txt"), FileMode.Append, FileAccess.Write);
try
{
s.Write(content, 0, content.Length);
}
finally
{
s.Close();
}
string content2 = System.IO.File.ReadAllText(Server.MapPath("~/aaa.txt"), Encoding.Unicode);
// or string content2 = System.IO.File.ReadAllText(Server.MapPath("~/aaa.txt"), Encoding.UTF8);