首页 新闻 会员 周边 捐助

格式转换 :c# 如何将字符串转换为这样的格式啊? 头像,你

0
悬赏园豆:100 [已解决问题] 解决于 2015-04-15 11:15

c# 如何将字符串转换为这样的格式啊? 头像,你 

并从这种格式转为 字符串

问题补充:

不好意思 给大家丢人了。

这么简单的弯我都没转过来。

不说了 跳楼去了

世界万物的主页 世界万物 | 菜鸟二级 | 园豆:276
提问于:2015-04-15 10:37
< >
分享
最佳答案
0

解码:

 System.Net.WebUtility.HtmlDecode(text) 或 System.Web.HttpUtility.HtmlDecode(text) 

编码:

 System.Net.WebUtility.HtmlEncode(text) 或 System.Web.HttpUtility.HtmlEncode(text) 

收获园豆:80
dudu | 高人七级 |园豆:30778 | 2015-04-15 11:08
其他回答(3)
0
 string str = "&#x5934;&#x50CF;&#xFF0C;&#x4F60;";
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("&#", "").Replace(";", "").Split('x');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        //将unicode字符转为10进制整数,然后转为char中文字符  
                        outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber);
                    }
                }
                catch (FormatException ex)
                {
                    outStr = ex.Message;
                }
            }  
            Console.WriteLine(outStr);
收获园豆:10
幻天芒 | 园豆:37207 (高人七级) | 2015-04-15 10:47
0

转换原理?那很简单,读取这个字符的信息(char),然后转换为16进制,前面加"&#x",后面加";"就可以了吧?

有了上面的思想,下一步就是要考虑:

1、1个字符串转换为字符数组(本身就是字符数组),这里强调的是文字编码格式,比如GBK\UTF等

2、一个16进制转换为字符数组,也要考虑文字的编码。

 

下面的实现:定义一个Provider就轻松解决了,此外,也可以定义IConverter(具体名字忘记了)的接口实现类来达成目的。

收获园豆:10
519740105 | 园豆:5810 (大侠五级) | 2015-04-15 10:50
0

======

1、说明:

=======

 

形如——

&#dddd; &#xhhhh; &#name;

——的一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。

以 HTML 为例,这三种转义序列都称作 character reference:

  • 前两种是 numeric character reference(NCR),数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。
  • 后一种是 character entity reference,后接预先定义的 entity 名称,而 entity 声明了自身指代的字符。

从 HTML 4 开始,NCR 以 Unicode 为准,与文档编码无关。

「中国」二字分别是 Unicode 字符 U+4E2D 和 U+56FD,十六进制表示的 code point 数值「4E2D」和「56FD」就是十进制的「20013」和「22269」。所以——

&#x4e2d;&#x56fd; &#20013;&#22269;

——这两种 NCR 写法都会在显示时转换为「中国」二字。

NCR 可以用于转义任何 Unicode 字符,而 character entity reference 很受限,参见 HTML 4 和 HTML5 中已有定义的字符列表:

 

======

2、转换

=======

System.out.println(HtmlEncoder.encode("你好"));

System.out.println(HtmlDecoder.Decode(“&#x4e2d;&#x56fd;”));

LiuKaiFa | 园豆:1491 (小虾三级) | 2015-04-15 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册