c# 如何将字符串转换为这样的格式啊? 头像,你
并从这种格式转为 字符串
不好意思 给大家丢人了。
这么简单的弯我都没转过来。
不说了 跳楼去了
解码:
System.Net.WebUtility.HtmlDecode(text) 或 System.Web.HttpUtility.HtmlDecode(text)
编码:
System.Net.WebUtility.HtmlEncode(text) 或 System.Web.HttpUtility.HtmlEncode(text)
string str = "头像,你"; 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);
转换原理?那很简单,读取这个字符的信息(char),然后转换为16进制,前面加"&#x",后面加";"就可以了吧?
有了上面的思想,下一步就是要考虑:
1、1个字符串转换为字符数组(本身就是字符数组),这里强调的是文字编码格式,比如GBK\UTF等
2、一个16进制转换为字符数组,也要考虑文字的编码。
下面的实现:定义一个Provider就轻松解决了,此外,也可以定义IConverter(具体名字忘记了)的接口实现类来达成目的。
======
1、说明:
=======
形如——
——的一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。
以 HTML 为例,这三种转义序列都称作 character reference:
从 HTML 4 开始,NCR 以 Unicode 为准,与文档编码无关。
「中国」二字分别是 Unicode 字符 U+4E2D 和 U+56FD,十六进制表示的 code point 数值「4E2D」和「56FD」就是十进制的「20013」和「22269」。所以——
——这两种 NCR 写法都会在显示时转换为「中国」二字。
NCR 可以用于转义任何 Unicode 字符,而 character entity reference 很受限,参见 HTML 4 和 HTML5 中已有定义的字符列表:
======
2、转换
=======
System.out.println(HtmlEncoder.encode("你好"));
System.out.println(HtmlDecoder.Decode(“中国”));