关于字符串编码的问题!!!!

时间:2023-01-03 23:36:12
如题 MENT 等价于\u039C\u0395\u039D\u03A4 ,不知道是什么编码,请教大家是怎么转换的

12 个解决方案

#1


原因是这样的,我的字串里面是\u039C\u0395\u039D\u03A4 Volley ,输出是应该是ΜΕΝΤ Volley,但是我用JSON类拆分以后,发现变成了039C0395039D03A4 Volley,\u不见了

#2


或者怎么把\u039C\u0395\u039D\u03A4直接转成MENT

#3


如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT

#4


引用 3 楼 lanjian1111 的回复:
如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT


http://bbs.csdn.net/topics/390721598

#5


引用 4 楼 sp1234 的回复:
Quote: 引用 3 楼 lanjian1111 的回复:

如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT


http://bbs.csdn.net/topics/390721598

我用public static string FromUnicodeString( string str)
        {
            //最直接的方法Regex.Unescape(str);
            StringBuilder strResult = new StringBuilder();
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("\\", "").Split('u');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        int charCode = Convert.ToInt32(strlist[i], 16);
                        strResult.Append((char)charCode);
                    }
                }
                catch (FormatException ex)
                {
                    return Regex.Unescape(str);
                }
            }
            return strResult.ToString();
        }
可以得到的是这个样子的
关于字符串编码的问题!!!!
是前面的那个字符串,我要想转换成普通的MENT,前面那个我也不知道是什么格式的

#6


前面那个怪怪的

#7


引用 4 楼 sp1234 的回复:
Quote: 引用 3 楼 lanjian1111 的回复:

如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT


http://bbs.csdn.net/topics/390721598

后面那个才是正常的输出

#8


这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。

#9


引用 8 楼 github_22161131 的回复:
这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。

我小写的是正常的好吧,键盘里面输出就是MENT,而不是前面那种,不知道怎么转换前面那种,请教

#10


引用 8 楼 github_22161131 的回复:
这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。


int charCode = Convert.ToInt32(strlist[i], 16);这一句M的charCode值是924,正常情况下M的值应该不是924,正常的M输出的ASCII值是77

#11


引用 8 楼 github_22161131 的回复:
这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。

实际上Regex.Unescape(str),执行了这一句就输出了那些希腊字母

#12


像这样的特殊字符只能替换,因为你也不知道那些特殊字符到底对应哪些英文字母,类似
String.RemoveExtraSpace().RemoveHTMLTag().NCR2Text().Replace("(W)", "(w)")..Replace("\\u200C", "").Replace("\\u0421", "C").Replace("\\xED", "i").Replace("\\xC1", "A").Replace("\\xA0", " ").Replace("\\u039C", "M").Replace("\\u0395", "E").Replace("\\u039D", "N").Replace("\\u03A4", "T");有多少就替换多少,只想到这个笨办法

#1


原因是这样的,我的字串里面是\u039C\u0395\u039D\u03A4 Volley ,输出是应该是ΜΕΝΤ Volley,但是我用JSON类拆分以后,发现变成了039C0395039D03A4 Volley,\u不见了

#2


或者怎么把\u039C\u0395\u039D\u03A4直接转成MENT

#3


如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT

#4


引用 3 楼 lanjian1111 的回复:
如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT


http://bbs.csdn.net/topics/390721598

#5


引用 4 楼 sp1234 的回复:
Quote: 引用 3 楼 lanjian1111 的回复:

如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT


http://bbs.csdn.net/topics/390721598

我用public static string FromUnicodeString( string str)
        {
            //最直接的方法Regex.Unescape(str);
            StringBuilder strResult = new StringBuilder();
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("\\", "").Split('u');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        int charCode = Convert.ToInt32(strlist[i], 16);
                        strResult.Append((char)charCode);
                    }
                }
                catch (FormatException ex)
                {
                    return Regex.Unescape(str);
                }
            }
            return strResult.ToString();
        }
可以得到的是这个样子的
关于字符串编码的问题!!!!
是前面的那个字符串,我要想转换成普通的MENT,前面那个我也不知道是什么格式的

#6


前面那个怪怪的

#7


引用 4 楼 sp1234 的回复:
Quote: 引用 3 楼 lanjian1111 的回复:

如果这样string str = "\u039C\u0395\u039D\u03A4 ";
Console.WriteLine(str);

输出的是MENT,但是如果我把\u039C\u0395\u039D\u03A4放到文件中,然后再读出来,再输出,显示的就是\u039C\u0395\u039D\u03A4,我想直接输出MENT


http://bbs.csdn.net/topics/390721598

后面那个才是正常的输出

#8


这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。

#9


引用 8 楼 github_22161131 的回复:
这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。

我小写的是正常的好吧,键盘里面输出就是MENT,而不是前面那种,不知道怎么转换前面那种,请教

#10


引用 8 楼 github_22161131 的回复:
这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。


int charCode = Convert.ToInt32(strlist[i], 16);这一句M的charCode值是924,正常情况下M的值应该不是924,正常的M输出的ASCII值是77

#11


引用 8 楼 github_22161131 的回复:
这已经不是编码的问题了,你的这个 ΜΕΝΤ 是大写的希腊字母,小写是 μεντ,它就不是英文的MENT。

实际上Regex.Unescape(str),执行了这一句就输出了那些希腊字母

#12


像这样的特殊字符只能替换,因为你也不知道那些特殊字符到底对应哪些英文字母,类似
String.RemoveExtraSpace().RemoveHTMLTag().NCR2Text().Replace("(W)", "(w)")..Replace("\\u200C", "").Replace("\\u0421", "C").Replace("\\xED", "i").Replace("\\xC1", "A").Replace("\\xA0", " ").Replace("\\u039C", "M").Replace("\\u0395", "E").Replace("\\u039D", "N").Replace("\\u03A4", "T");有多少就替换多少,只想到这个笨办法