如何创建未知字符编码的文件

时间:2019-06-26 16:53:12

标签: utf-8 character-encoding char

我想测试一些文件字符编码检测功能,在其中输入UTF-8,windows-1252,ISO-8859-1等类型的文件。

我还想输入字符编码未知的文件,以便可以提醒用户。

我还没有找到一种创建字符编码未知或无法检测的文件的好方法。

2 个答案:

答案 0 :(得分:1)

head -c1024 /dev/random > /tmp/badencoding

几乎可以肯定,这实际上是您想要的(1kB的随机数据),但是对于“无法检测的字符编码”并没有一个很好的定义。此随机文件是 legacy 8位ASCII码。肯定不是8位ASCII的事实只是一种启发。因此,您要做的就是测试算法是否以用户可能希望的方式工作;没有阅读创建文件的人的想法,这里就没有最终的“正确”。

答案 1 :(得分:0)

一个空的文本文件具有不可检测的字符编码(除非它具有Unicode BOM)。

但是,基本上,您要么要求用户告诉他们正在使用的文件编码哪个字符,要么告诉他们要使用哪个字符(或者,如果指定了默认值但允许覆盖它,则两者都可以使用[是许多编译器的工作。])。

然后您可以根据约定的字符编码测试内容的有效性。这将捕获一些错误,但请注意,许多字符编码都允许具有任何值的任何字节序列,因此任何内容始终有效(即使字符编码不是用于写入文件的内容)。

然后,您可以测试与预期值(例如某些语法或允许的字符或单词)的一致性,以捕获更多错误(但不一定能说出字符编码不匹配;可能只是内容不正确)。

要创建具有不同字符编码的文件,您可以编写程序或使用第三方程序,例如iconv或PowerShell。

如果您想要未知的字符编码,只需生成一个随机整数图,转换文件,丢弃该图,然后甚至不知道。

最终,文本文件对于用户来说太技术性了。给他们一些其他选项,例如打开的文档或电子表格格式,例如.odt,.docx,.ods或.xlsx。这些很容易被程序阅读。