【转载】App.config/Web.config 中特殊字符的处理
写一个网站,遇到一个问题,发布以后,提示错误,但是即使打开错误提示(在web.config中打开),还是只提示错误,没提示什么地方错误,这让我知道了:是webconfig本身的错误,经过排除,是链接字符串中的特殊字符造成的!然后网上搜了一下,找到了这篇文章:
http://www.cnblogs.com/fordwayne/p/3200470.html
我们知道在应用程序中嵌入连接字符串可能导致安全漏洞和维护问题。使用 Ildasm.exe(MSIL 反汇编程序) 工具可以查看编译到应用程序源代码中的未加密连接字符串。此外,如果连接字符串发生更改,则必须重新编译应用程序。因此,强烈建议将连接字符串存储在应用程序配置文件中。
最近在学习SQL Server时遇到连接字符串包含特殊字符出现编译错误的问题。
App.config:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <connectionStrings> <add name="DBconnStr" connectionString="Data Source=.;Initial Catalog=MyTest;User ID=sa;PassWord=123&456"/> </connectionStrings> </configuration>
由于数据库连接的密码中含有特殊字符"&",编译时出现如下如下错误信息:
显然编译器不认识"&456",怎么解决呢,总不能更换密码吧?
事实上App.config是xml文件,在xml文件中特殊字符要进行HTML转义。
HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用。这些符号是不显示在我们最终看到的网页里的,那如果我们希望在网页中显示这些符号,就要用到HTML转义字符串(Escape Sequence)了
HTML特殊转义字符列表
最常用的字符实体
显示 |
说明 |
实体名称 |
实体编号 |
空格 |
|
  |
|
< |
小于 |
< |
< |
> |
大于 |
> |
> |
& |
&符号 |
& |
& |
" |
双引号 |
" |
" |
© |
版权 |
© |
© |
® |
已注册商标 |
® |
® |
™ |
商标(美国) |
™ |
™ |
× |
乘号 |
× |
× |
÷ |
除号 |
÷ |
÷ |
所以只要把"&"进行转义就可以了,将PassWord改为
PassWord=123&456"
成功通过编译。