首先,了解一波转义字符串。先百度了“转义字符”,发现如下:
转义字符串(Escape String),即字符实体分成三部分:第一部分是一个&符号,第二部分是实体名字或者#加上实体编号;第三部分是一个分号。
几乎每种语言都有自己的转义符,例如:HTML、JAVA、XML、ORACLE、JS等。
HTML的< >&"©分别是<,>,&,",©;的转义字符。
XML只有5个转义符: < >& " &apos。
那么,我这里举我遇到的两个实际案例来说明。
1.通过js方式实现调用outlook并写入内容
我本地有安装outlook,然后js中使用window.location=mailto...方式实现,不过发现一个问题,就是当我的内容中出现“%S”时,在邮件中显示为“?”。经查,发现%在邮件中有特殊作用,例如内容中如果出现“%0a”则换行。而“%S”没有这种用法,所以导致识别不出来。解决方案:
string content = escape(content);
2.字符串传入.net后台(c#)并存入sqlserver数据库,字段类型为xml
发现如果字符串中有“&”则存入失败,后面发现xml中不能识别“&”,需要转义。首先我查到了下面一对函数:
System.Text.RegularExpressions.Regex.Escape(s)
System.Text.RegularExpressions.Regex.Unescape(s)
尝试了下,不行,不过这里我不深究这个,找到另外一对函数:
System.Web.HttpUtility.UrlEncode()
System.Web.HttpUtility.UrlDecode()
这个是ok的。
目前仍然有两个confuse:
1.sqlserver的xml类型
2.c#例子中的前一对函数和后一对函数的具体作用和区别
记录一次解决转义字符的过程,期望下次做的更好。