我想用StreamWriter在一個緩存文件(.txt)中編寫一個字符串。它正在工作,但是高速緩存文件中的字符串看起來與我想要複製的字符串不同。 我的輸入字符串包含一個特殊字符'ƒ',寫入緩存文件的輸出字符串包含經典的'f'。 我指定的編碼:用C中的特殊字符編寫一個字符串#
var writer = new StreamWriter(stream, Encoding.GetEncoding("ISO-8859-1"))
我需要指定其他編碼?
我想用StreamWriter在一個緩存文件(.txt)中編寫一個字符串。它正在工作,但是高速緩存文件中的字符串看起來與我想要複製的字符串不同。 我的輸入字符串包含一個特殊字符'ƒ',寫入緩存文件的輸出字符串包含經典的'f'。 我指定的編碼:用C中的特殊字符編寫一個字符串#
var writer = new StreamWriter(stream, Encoding.GetEncoding("ISO-8859-1"))
我需要指定其他編碼?
只需使用UTF-8編碼。您的字符受其支持,如果大多數其他字符都在ASCII範圍內,那麼您的文件將不會比使用ISO-8859-1編碼進行編碼時大,因爲UTF-8編碼僅使用1個字節在ASCII範圍內編碼字符(如果這是一個問題)。 Here's more info from Wikipedia。
感謝現在正在工作的所有人 – fabco63 2013-04-22 14:42:55
那個字符(LATIN SMALL LETTER F WITH HOOK)沒有出現在iso-8859-1,所以是的,你需要一個不同的編碼;可能是utf-8。
ISO-8859-1編碼沒有那個字符。您應該始終使用Encoding.UTF8
。
「永遠」是一個強詞;對於不確定他們在編碼方面做什麼的人,UTF-8是一個合理的默認值,因爲它通常會完成工作。這與「總是」非常相似,儘管 – 2013-04-22 14:15:44
您應該使用UTF8 - 期望的字符在ISO-8859-1中不可用。
我想這個混淆來自瀏覽器,某些數據庫等,將ISO-8859-1/Latin1視爲支持字符的Windows-1252的別名,而Encoding不這樣做。所以你可能意思是'Windows-1252',它會起作用。 :P – Esailija 2013-04-22 20:16:06