作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为文本解码类编写一组单元测试。我想编写一个测试,正确执行将不可映射的 input 处理为 CharsetDecoder
。但是,我很难启动一个执行此操作的字节缓冲区。示例:
CharsetDecoder decoder = Charset.forName("utf-8").newDecoder();
decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
ByteBuffer in = ?
CharBuffer out = CharBuffer.allocate(256);
CoderResult result = decoder.decode(in, out, true);
assertTrue(result.isUnmappable());
如何启动字节缓冲区(第 3 行)以通过断言(第 6 行)?
不起作用的东西:
最佳答案
我认为不可映射字符 条件仅与编码任务相关。这里,256个字符没有为iso-8859-1定义:
public void testUnmappableCharacter() {
CharsetEncoder encoder = Charset.forName("iso-8859-1").newEncoder();
CharBuffer in = CharBuffer.wrap(new char[]{256});
ByteBuffer out = ByteBuffer.allocate(1);
CoderResult result = encoder.encode(in, out, false);
System.out.println(result);
}
对于 UTF-8 解码,您唯一能够产生的是格式错误条件,因为无法对所有非法 UTF-8 代码点进行编码。
关于java - 如何为 Java CharsetDecoder 生成 'un-mappable' 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108861/
我是一名优秀的程序员,十分优秀!