相关疑难解决方法(0)

如何将文件内容标识为ASCII或二进制文件

如何使用C++将文件内容标识为ASCII或二进制文件?

c++ ascii file-format binaryfiles

28
推荐指数
7
解决办法
3万
查看次数

是否可以可靠地将用户文件自动解码为Unicode?[C#]

我有一个Web应用程序,允许用户上传他们的内容进行处理.处理引擎需要UTF8(我正在从多个用户的文件中编写XML),所以我需要确保能够正确解码上传的文件.

因为如果我的任何用户知道他们的文件甚至编码我会感到惊讶,我很少希望他们能够正确指定要使用的编码(解码器).因此,我的应用程序在解码前留下了检测任务.

这似乎是一个普遍的问题,我很惊讶没有找到解决方案的框架功能或一般配方.是不是我没有搜索有意义的搜索词?

我已经实现了BOM感知检测(http://en.wikipedia.org/wiki/Byte_order_mark),但我不确定文件上传的频率是多少,无需BOM表示编码,这对于大多数非UTF文件.

我的问题归结为:

  1. BOM识别检测对于绝大多数文件是否足够?
  2. 在BOM检测失败的情况下,是否可以尝试不同的解码器并确定它们是否"有效"?(我的尝试表明答案是"不".)
  3. 在什么情况下,"有效"文件会因C#编码器/解码器框架而失败?
  4. 是否有一个存储库,其中包含大量具有各种编码的文件用于测试?
  5. 虽然我特别询问C#/ .NET,但我想知道Java,Python和其他语言的答案,以便下次我必须这样做.

到目前为止,我发现:

  • 带有Ctrl-S字符的"有效"UTF-16文件导致编码为UTF-8抛出异常(非法字符?) (这是一个XML编码异常.)
  • 使用UTF-8解码有效的UTF-16文件会成功,但会为文本提供空字符.咦?
  • 目前,我只期望UTF-8,UTF-16和可能的ISO-8859-1文件,但我希望该解决方案尽可能可扩展.
  • 我现有的一组输入文件不够宽泛,无法发现实时文件会出现的所有问题.
  • 虽然我试图解码的文件是"文本",但我认为它们通常是用文件中的垃圾字符创建的方法.因此"有效"文件可能不是"纯粹的".哦,快乐.

谢谢.

c# string multilingual utf-8 utf-16

8
推荐指数
1
解决办法
706
查看次数

标签 统计

ascii ×1

binaryfiles ×1

c# ×1

c++ ×1

file-format ×1

multilingual ×1

string ×1

utf-16 ×1

utf-8 ×1