2013-04-22 138 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中不可用。