看看下面的例子: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英鎊。) –