Encoding 如何自动检测字符串编码?

Encoding 如何自动检测字符串编码?,encoding,base64,decode,decoding,Encoding,Base64,Decode,Decoding,我有一个字符串,它以某种方式包含一些编码值,比如Base64 问题是我真的不知道它是否真的是Base64(有A-Z,A-Z.0-9,+,/),所以它可能是我不熟悉的其他代码 有没有一种方法或任何其他在线网站向他发送一个编码输入,它可以告诉我是哪种代码 注意: 我不是问如何知道我的字符串是UTF-8还是iso-8859-1之类的。 我需要的是知道我的代码编码在哪一个 编辑: 更清楚地说, 我需要像这样的输入:23Nzi4lUE4qlc+Pmc3blWMS1Irmgo3i8UTQHhoL7Vyzqp

我有一个字符串,它以某种方式包含一些编码值,比如Base64

问题是我真的不知道它是否真的是Base64(有A-Z,A-Z.0-9,+,/),所以它可能是我不熟悉的其他代码

有没有一种方法或任何其他在线网站向他发送一个编码输入,它可以告诉我是哪种代码

注意: 我不是问如何知道我的字符串是UTF-8还是iso-8859-1之类的。 我需要的是知道我的代码编码在哪一个

编辑:

更清楚地说,

我需要像这样的输入:
23Nzi4lUE4qlc+Pmc3blWMS1Irmgo3i8UTQHhoL7VyzqpEV/i9bdhoitex0a7/tqcvskrxr89v2yj7tefdg4gvwebs=
这是我拥有的编码字符串

输出应为编码字符串的类型,其解码方式如下:

Base64 -> "Big yellow fish is swimming in the tube."
也许有一个程序会得到一个输入,并尝试用一系列编码类型(Base64等)对其进行解码。输出实际上并不重要,因为它的好坏取决于用户。

处理base64反编码

由于Base64只是一类编码方案的一个实例(具体来说,将比特流编码为base_uu数),因此您可能永远不会比只测试两个标准编码方案更好

您可以检查编码方案的格式是否良好,或者尝试使用web服务或您自己的代码在不引发错误的情况下进行解码

在(可能是病理性的)情况下,将有一个以上的编码方案,给定的八位组流将成功解码

最好的做法是,在设置验证时投入精力,首先将数据提供程序提交到一个(或“几个”)编码(当然,这并不总是可能的)。

处理base64 de/encoding

由于Base64只是一类编码方案的一个实例(具体来说,将比特流编码为base_uu数),因此您可能永远不会比只测试两个标准编码方案更好

您可以检查编码方案的格式是否良好,或者尝试使用web服务或您自己的代码在不引发错误的情况下进行解码

在(可能是病理性的)情况下,将有一个以上的编码方案,给定的八位组流将成功解码



最好的做法是在设置验证时投入精力,首先将数据提供程序提交给一个(或“几个”)编码(当然,这并不总是可能的)。

尝试您知道并准备按顺序处理的所有可能的编码。如果它使用一种特定的编码进行解码,那么它很可能是用这种编码进行编码的。这实际上与猜测UTF-8、ISO-8859或任何其他类型的编码完全相同。预期输出已知吗?不,编码类型也未知。我假设您是在问,因为简单的“无错误解码”无法满足您的需要。然而,你需要什么?你知道你的明文必须是什么样子吗?恕我直言,如果不查阅编码数据流以外的信息,您将无法获得可靠的好解决方案。我不介意有一个有错误的解决方案,这只会告诉我,我的输入与输出不符,因此这不是我正在寻找的编码方案。请尝试您知道并准备按顺序处理的所有可能的编码。如果它使用一种特定的编码进行解码,那么它很可能是用这种编码进行编码的。这实际上与猜测UTF-8、ISO-8859或任何其他类型的编码完全相同。预期输出已知吗?不,编码类型也未知。我假设您是在问,因为简单的“无错误解码”无法满足您的需要。然而,你需要什么?你知道你的明文必须是什么样子吗?Imho,如果不查阅编码数据流以外的信息,你将无法获得可靠的好解决方案。我不介意有一个有错误的解决方案,这只会告诉我,我的输入与输出不符,因此这不是我正在寻找的编码方案。在我问这个问题之前,我看过这个网站,它对我很好。我问的是如何检测编码的类型,知道它是Base64还是其他的……简言之,你们不能。原因是,根据使用场景,给定编码中的任何字符串都可能被视为纯文本文档或恶意攻击者。此外,您感兴趣的许多(相当于大多数)“编码”类型并没有为编码数据流提供足够的特征,以允许可靠的检测。您可以做的确实是知情猜测:识别所需/禁止的数据流属性,尝试解码。不过,你得到的只是提示。您需要的可靠性越高,将数据提供者提交到特定工作流就越好。似乎您是对的。但也许有一些程序可以获取我的输入并在Base64之类的编码类型上运行它,如果输出是对的或错的,只打印输出的内容并不重要。你知道这样的事吗?你说的“如”是什么意思?有无限多个可想象的编码方案。无论如何,我不知道有哪种软件可以解决你的任务,除了简单的单个解码器的组合。我指的是所有更流行的编码方案(我知道有无限种),比如Base64等等。在我问这个问题之前,我看过这个网站,这对我很好。我问的是如何检测编码的类型,知道它是Base64还是其他的……简言之,你们不能。原因是,根据使用场景,给定编码中的任何字符串都可能被视为纯文本文档或恶意攻击者。此外,您感兴趣的许多(相当于大多数)“编码”类型并没有为编码数据流提供足够的特征,以允许可靠的检测。你能做什么