ConfigurationManager.AppSettings将“\ n”转换为“\\ n”为什么?

时间:2012-03-02 08:00:53

标签: asp.net web-config appsettings

我在 web.config 中有一个AppSetting。

<add key="key" value="\n|\r"/>

当我通过ConfigurationManager.AppSettings["key"]阅读时,它会提供“\\ n | \\ r”。 为什么?

4 个答案:

答案 0 :(得分:3)

在调试器中,因为反斜杠是一个特殊字符,用于标签(\ t)和行结尾(\ n)之类的东西,它必须通过使用另一个反斜杠进行转义。因此,任何包含实际\的文本都将显示为\。如果您将其打印到文件或以任何其他方式使用它,您会发现您的字符串只包含该文件。

这不是ConfigurationManager做任何事情。

答案 1 :(得分:2)

反斜杠转义语法只能由C#编译器在字符串文字内部识别。由于您的字符串是在运行时从XML文件中读取的,因此您需要使用与XML兼容的转义(字符实体),以便在字符串中包含这些字符。因此,您的应用设置条目应如下所示:

<add key="key" value="&x10;|&x13;"/>

因为10和13分别是换行和回车的十六进制值。

就像cjk所说的那样,调试器插入了额外的斜杠,表明它正在看到 literal 斜杠而不是转义序列。

答案 2 :(得分:1)

我用字符串替换解决了同样的问题 不漂亮..但是有效!

ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n")

答案 3 :(得分:0)

string str = "\n";// means \n
string str1 = @"\n";// means \\n

从AppSettings中,似乎在提取键的值时,@是内部包装的..它由编译器完成而不是运行时。

相关问题