【问题标题】:What is ¿ in Text Files文本文件中的 ¿ 是什么
【发布时间】:2012-10-08 17:29:22
【问题描述】:

我正在开发一个处理一堆文本文件的 C# 程序。这些文件是由系统创建的,所以我无法更改源,但在文件中 ¿ 出现多次,导致我的代码崩溃。

¿ 是什么意思,我该如何处理?

【问题讨论】:

  • 您是否尝试过使用 UTF-8 而不是 ISO-8859-1 作为这些文件的编码?
  • @NullUserException - 你的意思是在读取文件时?
  • 你应该找出你得到的那些文件的实际编码是什么,然后处理它们。让事情默认永远不是一个好主意。
  • @hshah 是的。
  • 相关(强调我的):What character encoding is c3 82 c2 bf?

标签: c# encoding character


【解决方案1】:

¿ 表示您有一个从另一种编码类型转换而来的字符,并且在您的编码类型的字符表中无法识别。如果您使用其他编码类型,您可以处理它。

Documentation

【讨论】:

  • System.Text.Encoding 的成员不是枚举项。
  • 我仍然认为这行不通(至少,不可靠)——编码自动检测只有在您实际阅读任何内容后才有效。从好的方面来说,您很少需要事后检查编码(为什么会这样?),您只需读取文件即可。
  • @Konrad: 不,最后,经过多次更改,这将起作用 :) 当您以与写入相同的编码读取文件时,您将不会收到像“¿”这样的字符表错误
  • @Paedow if (…) 测试不起作用(并且是不必要的)。 The documentation 明确表示“在第一次调用 Read 方法之前不会进行编码自动检测”。此外,您不能使用new sr.CurrentEncoding(),这甚至不是有效的语法。
【解决方案2】:

Unicode 编码文件的开头是一个“标题”。此标头告诉读取它的程序它是一个 Unicode 文件。这称为“字节顺序标记”,向读者表明它是什么类型的 Unicode。 http://msdn.microsoft.com/en-us/library/windows/desktop/dd374101(v=vs.85).aspx

【讨论】:

    【解决方案3】:

    要详细说明我的评论,首先您应该找出创建这些时使用的编码,然后在读入时使用该编码。查看:

    BinaryReader(Stream, Encoding)
    

    http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 2022-12-15
      • 1970-01-01
      • 2014-10-05
      • 2012-06-27
      • 2011-12-03
      相关资源
      最近更新 更多