2013-04-22 133 views
2

我想用StreamWriter在一個緩存文件(.txt)中編寫一個字符串。它正在工作,但是高速緩存文件中的字符串看起來與我想要複製的字符串不同。 我的輸入字符串包含一個特殊字符'ƒ',寫入緩存文件的輸出字符串包含經典的'f'。 我指定的編碼:用C中的特殊字符編寫一個字符串#

var writer = new StreamWriter(stream, Encoding.GetEncoding("ISO-8859-1")) 

我需要指定其他編碼?

+1

我想這個混淆來自瀏覽器,某些數據庫等,將ISO-8859-1/Latin1視爲支持字符的Windows-1252的別名,而Encoding不這樣做。所以你可能意思是'Windows-1252',它會起作用。 :P – Esailija 2013-04-22 20:16:06

回答

2

只需使用UTF-8編碼。您的字符受其支持,如果大多數其他字符都在ASCII範圍內,那麼您的文件將不會比使用ISO-8859-1編碼進行編碼時大,因爲UTF-8編碼僅使用1個字節在ASCII範圍內編碼字符(如果這是一個問題)。 Here's more info from Wikipedia

+0

感謝現在正在工作的所有人 – fabco63 2013-04-22 14:42:55

1

ISO-8859-1編碼沒有那個字符。您應該始終使用Encoding.UTF8

+4

「永遠」是一個強詞;對於不確定他們在編碼方面做什麼的人,UTF-8是一個合理的默認值,因爲它通常會完成工作。這與「總是」非常相似,儘管 – 2013-04-22 14:15:44

0

您應該使用UTF8 - 期望的字符在ISO-8859-1中不可用。