【问题标题】:Writing a string with a special character in C#在 C# 中编写带有特殊字符的字符串
【发布时间】:2013-04-15 11:40:42
【问题描述】:

我正在尝试使用 StreamWriter 在缓存文件 (.txt) 中写入字符串。它正在工作,但是缓存文件中的字符串似乎与我要复制的字符串不同。 我的输入字符串包含一个特殊字符'ƒ',写入缓存文件的输出字符串包含一个经典的'f'。 我指定了一个编码:

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

我需要指定其他编码吗?

【问题讨论】:

  • 我猜这种混淆来自浏览器、一些数据库等,将 ISO-8859-1/Latin1 视为支持该字符的 Windows-1252 的别名,而 Encoding 不这样做。所以你的意思可能是Windows-1252,它会起作用的。 :P

标签: c# encoding streamwriter


【解决方案1】:

那个字符 (LATIN SMALL LETTER F WITH HOOK) 没有出现在 iso-8859-1 中,所以是的,你需要不同的编码;可能是 utf-8。

【讨论】:

    【解决方案2】:

    只需使用 UTF-8 编码。它支持您的字符,并且如果大多数其他字符都在 ASCII 范围内,那么您的文件不会比使用 ISO-8859-1 编码的文件大,因为 UTF-8 编码仅使用 1 个字节对 ASCII 范围内的字符进行编码(如果这是一个问题)。 Here's more info from Wikipedia.

    【讨论】:

      【解决方案3】:

      ISO-8859-1 编码没有那个字符。

      您应该始终使用Encoding.UTF8

      【讨论】:

      • “总是”是一个强词; UTF-8 对于那些不确定自己在用编码做什么的人来说是一个合理的默认值,因为它通常可以完成工作。不过,这与“总是”相去甚远
      【解决方案4】:

      您应该使用 UTF8 - ISO-8859-1 中没有所需的字符。

      【讨论】:

        猜你喜欢
        • 2020-07-12
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-13
        • 2017-12-31
        • 1970-01-01
        相关资源
        最近更新 更多