当前位置: 首页 > 知识库问答 >
问题:

从复选框中检索值的编码格式错误

郎飞航
2023-03-14

我有带复选框的pdf。现在我想用pdfbox设置一个复选框的值,这样它就被选中了。当复选框的onValue包含德语特殊字符时,它将不起作用,否则它将起作用。

我认为这样做的原因是,复选框值的编码被编码为Windows-1252,而我试图使用的setValue是在UTF-8中。

下面是我的测试方法,可以用来重现错误

final String newValue = "Spülen";
PrefillDataDrawer drawer = new PrefillDataDrawer(pdf);

PDField field = getPDFieldForName(searchField);
assertNotNull(field);
PDCheckBox cb = (PDCheckBox) field;

assertEquals(newValue, cb.getOnValue());

输出为:

expected:<Sp[ü]len> but was:<Sp[ü]len>
Expected :Spülen
Actual   :Spülen

据我所知,intellij的控制台使用系统编码,在我的例子中是windows-1252,这就是为什么你能正确地看到实际值,预期值是UTF-8,显示为:Spülen

证明我可以把上面的新值改成这个

final String newValue = "Sp\u00FClen";

那我的测试通过了。

所以我的问题是cb。getOnValue()在windows-1252中传递字符串。是否可以使用pdfbox更改此设置,或者是否有其他解决方案可以使字符串比较通过?

共有1个答案

邵展
2023-03-14

问题是编译器和ide(intellij)使用了不同的编码。IDE使用UTF-8和编译器CP1252,这可以通过在我的构建中添加这两行代码来改变。格拉德尔

compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"

有了这些,我的案子如期完成了。

 类似资料:
  • 问题内容: 如何使用jQuery获取选中的复选框的值,并立即将其放入文本区域? 就像下面的代码: 如果Ajax更新了,则altCognito的以下代码无效。有什么好的解决方法吗? 问题答案: 这是一个可行的方法: 更新资料 几个月后,有人问到另一个问题,即如果ID更改,如何保持上述工作。好了,解决方案归结为将updateTextArea函数映射到使用CSS类的通用对象,并使用live函数监视DOM

  • 当我做建筑的maven项目是抛出下面的错误。我检查了我所有的代码,没有地方\或\u存在于代码中。虽然很多答案和资源指出了/vs中的错误,但我想提到的是,我没有本地更改,这个回购对我团队中的其他人来说也很好。它以前对我也很好。 我已经尝试了以下方法: 在我的mac电脑上重新安装java 能不能请一些人帮我一下。

  • 本文向大家介绍layui 监听表格复选框选中值的方法,包括了layui 监听表格复选框选中值的方法的使用技巧和注意事项,需要的朋友参考一下 需要达到的目的: ajax()异步请求后台时,需要传入表格里复选框选中的id值 注意:在渲染form on 方法的done里面加入 将复选框选中的值的id加入数组中,然后传递到后台作为ids参数 以上这篇layui 监听表格复选框选中值的方法就是小编分享给大家

  • 我希望在选中表中的所有复选框时选中标题复选框,如果没有选中单个复选框,则应取消选中标题复选框。

  • 问题内容: 我正在使用表单编辑。表单中有两个选择框。一个选择框是国家,另一个选择框是州。状态选择框取决于所选国家/地区,并将动态填充。例如: 国家: 美国(选项值= 1) 英国(选项值= 2) 美国的州: 阿拉巴马州(选项值= 1) 加利福尼亚(选项值= 2) 佛罗里达(选项值= 3) 夏威夷(选项值= 4) 英国的州: 伦敦(期权价值= 5) 牛津(期权价值= 6) 如您所见,英国的国家ID以5

  • 当网格单元中的复选框更改其状态时,我需要更新存储:从存储中添加或删除值。如何处理此事件?顺便说一句,我用以下方式在网格中创建复选框: UPD2:现在我执行以下操作:按照最初的决定创建复选框: 而不是像这样处理网格中的事件:UPD3: 这是正确的方法。