java - Properties.load() 是否报告无效字节

标签 java properties

Properties.load(InputStream) 方法是否报告其输入中的无效字节?

API 规范明确指出 InputStream 必须使用 ISO 8859-1 (Latin-1) 字符编码对文本进行编码。这不允许字节值 0x81-0x9F。因此,如果存在此类字节,它应该抛出一个 IOException(一个 CharacterCodingException 是理想的)。但是是吗?如果不是,它如何处理这些无效字节?

最佳答案

尽管规范中有声明,但所提供的实现将这些无效字节视为 Unicode 字符; 0x81-0x9F 范围内的字节将被解释为 C1 控制字符。 source code有这个:

 //The line below is equivalent to calling a
 //ISO8859-1 decoder.
 c = (char) (0xff & inByteBuf[inOff++]);

不管评论怎么说,这等同于调用 ISO8859-1 解码器。


编辑

实际上,它相当于调用一个 ISO-8859-1(注意连字符)解码器。所以有两种可能的解释:

  • 提供的实现有问题。
  • 规范 (API) 文档没有正确描述作者的意图;它应该说流使用 ISO-8859-1 编码。

关于java - Properties.load() 是否报告无效字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680559/

相关文章:

java - 使用 ClientResponse 发布时 Jersey 客户端 MessageBodyProviderNotFoundException

java - 在你的macbook上,显示你的IDEA scala插件版本可以工作吗?

java - 如何将列表拆分为给定数量的子列表?

java - 通过 API 的非安全 URL 发送 idToken 是否安全?

c++ - 相当于Qt中的Win32 'SetProp'?

java - Phonegap 3.3 无法添加平台

python - 使用 getattr [ python ] 在实例上调用方法

python - 如何优雅地将类的所有属性作为函数中的参数传递?

vb.net - "obj.X"VB.net 的术语正确吗?

java - Java 属性文件的良好存储库组织实践