C#winform程序中解码问题

kangliangcheng 2013-09-02 01:38:02
如何将 {"val":"#ff0000","name":"\u7ea2\u8272"} 这段代码解码。 我用一个工具测试
显示 usc2转ansi: {"val":"#ff0000","name":"红色"}


在线等,谢谢啦!
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kangliangcheng 2013-09-02
  • 打赏
  • 举报
回复
引用 6 楼 guwei4037 的回复:
这样的就要对字符串进行改造,因为转义的原因\变为了\\。
static void Main(string[] args)
        {
            string content = "";
            StreamReader sr = File.OpenText("test.txt");
            content = sr.ReadToEnd();
            string result = Uri.UnescapeDataString(getCN(content));
            Console.WriteLine(result);
        }

        public static string getCN(string str)
        {
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("\\", "").Replace("\"}", "").Split('u');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber);
                    }
                }
                catch (FormatException ex)
                {
                    outStr = ex.Message;
                }
                outStr = strlist[0] + outStr + "\"}";
            }
            return outStr;
        }
谢谢啦,我这刚学C#,新手!谢谢啦
全栈极简 2013-09-02
  • 打赏
  • 举报
回复
这样的就要对字符串进行改造,因为转义的原因\变为了\\。
static void Main(string[] args)
        {
            string content = "";
            StreamReader sr = File.OpenText("test.txt");
            content = sr.ReadToEnd();
            string result = Uri.UnescapeDataString(getCN(content));
            Console.WriteLine(result);
        }

        public static string getCN(string str)
        {
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("\\", "").Replace("\"}", "").Split('u');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber);
                    }
                }
                catch (FormatException ex)
                {
                    outStr = ex.Message;
                }
                outStr = strlist[0] + outStr + "\"}";
            }
            return outStr;
        }
kangliangcheng 2013-09-02
  • 打赏
  • 举报
回复
引用 4 楼 guwei4037 的回复:
[quote=引用 3 楼 kangliangcheng 的回复:]
[quote=引用 1 楼 guwei4037 的回复:]
string result = Uri.UnescapeDataString("{\"val\":\"#ff0000\",\"name\":\"\u7ea2\u8272\"} ");
Console.WriteLine(result);


你好,还在线不? 为什么直接赋值可以转换,如果把这段放到txt中再读出来就不行了呢?[/quote]
请你把你从txt中读出来的代码贴上来。[/quote]

string content = "";
StreamReader sr = new StreamReader("D:\\1.txt", Encoding.GetEncoding("GB2312"));
content = sr.ReadToEnd();
string result = Uri.UnescapeDataString(content);
MessageBox.Show(result);


txt内容:
全栈极简 2013-09-02
  • 打赏
  • 举报
回复
引用 3 楼 kangliangcheng 的回复:
[quote=引用 1 楼 guwei4037 的回复:]
string result = Uri.UnescapeDataString("{\"val\":\"#ff0000\",\"name\":\"\u7ea2\u8272\"} ");
            Console.WriteLine(result);
你好,还在线不? 为什么直接赋值可以转换,如果把这段放到txt中再读出来就不行了呢?[/quote] 请你把你从txt中读出来的代码贴上来。
kangliangcheng 2013-09-02
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
string result = Uri.UnescapeDataString("{\"val\":\"#ff0000\",\"name\":\"\u7ea2\u8272\"} ");
            Console.WriteLine(result);
你好,还在线不? 为什么直接赋值可以转换,如果把这段放到txt中再读出来就不行了呢?
kangliangcheng 2013-09-02
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
string result = Uri.UnescapeDataString("{\"val\":\"#ff0000\",\"name\":\"\u7ea2\u8272\"} ");
            Console.WriteLine(result);
多谢!
全栈极简 2013-09-02
  • 打赏
  • 举报
回复
string result = Uri.UnescapeDataString("{\"val\":\"#ff0000\",\"name\":\"\u7ea2\u8272\"} ");
            Console.WriteLine(result);

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧