看看下面的例子:WriteAllText,字符编码,£和?
string testfile1 = Path.Combine(HttpRuntime.AppDomainAppPath, "folder\\" + "test1.txt");
if (!System.IO.File.Exists(testfile1))
{
System.IO.File.WriteAllText(testfile1, "£100", System.Text.Encoding.ASCII);
}
string testfile2 = Path.Combine(HttpRuntime.AppDomainAppPath, "folder\\" + "test2.txt");
if (!System.IO.File.Exists(testfile2))
{
System.IO.File.WriteAllText(testfile2, "£100", System.Text.Encoding.UTF8);
}
注意的编码。第一个输出是100。第二个输出100英镑。
我知道编码是不同的,但有人可以解释为什么ASCII编码不能写英镑?
呵呵,当你住在英格兰时,“£”字形只会在ASCII字符集中出现。对不起,ASCII中的A意味着“美国人”。考虑“$”。 –
除非你遵循特别要求ASCII的规范,否则它很少是正确的选择。 (而且,在“ASCII”这个词的许多用法中,ASCII字符集甚至不是实际意义上的。)考虑[Unicode]的UTF-8编码(http://www.unicode.org/charts/ nameslist/index.html)字符集 - 所有.NET,Java,JavaScript,...字符串都是Unicode。 HTML XML,JSON,Java,C#,...文件都是Unicode(一旦解码,无论如何)。但是,无论您选择多少种编码作为文件编写者,您都必须告诉读者哪一个阅读文本文件。 –
哦,而不是'Encoding.ASCII',试试这个:'Encoding.GetEncoding(“US-ASCII”,EncoderExceptionFallback.ExceptionFallback,DecoderExceptionFallback.ExceptionFallback)''。 (我非常喜欢无声数据丢失的例外情况,或者在您的情况下损失100英镑。) –