【问题标题】:Why Java doesn't throw exception when decoding bytes to string failed?为什么Java在将字节解码为字符串失败时不抛出异常?
【发布时间】:2017-05-05 09:13:47
【问题描述】:

如果解码失败时出现异常,我们可以一一尝试检测文件编码。

但是我没有找到一种方法会在 python 中抛出一些异常,如“UnicodeDecodeError”,有什么具体原因吗?

PS:当某些字节映射到未定义的字符时,解码过程会失败,因为大多数编码方案都留下了一些未编码的冗余码。

PPS:我问这个问题是因为我认为这是一个设计问题。我没有关于编码的问题。但是当我想像 Vim(文本编辑器)那样编写一些代码来自动检测文件编码时,我发现这种设计让事情变得很困难。

【问题讨论】:

  • 你怎么知道它失败了?指征是什么?
  • 当一些字节映射到未定义的字符时,解码过程失败,因为大多数编码方案留下了一些未编码的冗余码。

标签: java file-encodings


【解决方案1】:

任何字节序列只有在作为与您的用例相关的字符流有意义时才对您有意义。

当解释不适合您的用例时,您希望 Java 做什么? 您将看到“垃圾”输出。但从技术上讲,解码并没有失败。做到了?所以,它不能真正抛出任何异常。

您指定的编码可能不兼容。

【讨论】:

  • 我问这个问题是因为我认为这是一个设计问题。我没有关于编码的问题。但是当我想像 Vim(文本编辑器)那样编写一些代码来自动检测文件编码时,我发现这种设计让事情变得困难。
  • @luochen1990 使用Apche Tika 库。它会为您进行编码检测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 2011-01-23
相关资源
最近更新 更多