当前位置:编程学习 > C#/ASP.NET >>

请问\u5357\u7f8e\u89e3\u653e\u8005\u676f 这些编码是什么编码

请问\u5357\u7f8e\u89e3\u653e\u8005\u676f 这些编码是什么编码

用什么解码成汉字。

用 MessageBox 弹出这些,能自动转换成汉字。

谢谢。 --------------------编程问答-------------------- Unicode 编码。
"\" 是表示转义字符,建议学习下C#基本语法。 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
Unicode 编码。
"\" 是表示转义字符,建议学习下C#基本语法。



多谢回帖,其实我也知道是UNICODE编码。
但是问题出在
                byte[] content = Encoding.Default.GetBytes(content1);
                FileStream s = new FileStream(fileName, FileMode.Append, FileAccess.Write);
                try
                {
                    s.Write(content, 0, content.Length);
                }
                finally
                {
                    s.Close();
                }

如果content1是固定编码的,string content1 = "\u5357\u7ebd\u5361\u65af\u5c14";
则保存时自动转成中文。
如果content1是File.ReadAllText(@"E:\WorkSpace\hnmccComplex\hnmccComplex\bin\Debug\s1.txt", Encoding.Default)
读出来的  Encoding换了utf-8和unicode也都不转换。

用了一些转换类,好像也不好使。有没有能用的转换类,谢谢

--------------------编程问答-------------------- \u后面是16进制,转化为10进制并赋值给char就可以了。 --------------------编程问答-------------------- unicode
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
return reg.Replace(SourceString, delegate(Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString();
using(System.IO.StreamWriter   sw   =   new   StreamWriter(@ " ",true,System.Text.Encoding.Unicode)) 

} --------------------编程问答-------------------- Encoding要用同步 使用Unicode或者UTF8都可以.

下面代码经过测试,写入和读出都没有问题。


            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);
--------------------编程问答--------------------

        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);//输出和上面一样           
            
        }
--------------------编程问答--------------------
引用楼主 likaiabc 的回复:
请问\u5357\u7f8e\u89e3\u653e\u8005\u676f 这些编码是什么编码

用什么解码成汉字。

用 MessageBox 弹出这些,能自动转换成汉字。

谢谢。


不用解码!这本来就是5个汉字。 --------------------编程问答--------------------
引用 2 楼 likaiabc 的回复:
其实我也知道是UNICODE编码。
但是问题出在
  byte[] content = Encoding.Default.GetBytes(content1);
  FileStream s = new FileStream(fileName, FileMode.Append, FileAccess.Write);
  try
  {
  s.Write(content, 0, content.Length);
  }


你向文件写入了自定义的字符,并没有写入那5个汉字。只能自己转,转换类不可能知道content中哪一个需要转哪一个不需要转。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,