gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:23:03 25 4
gpt4 key购买 nike

我有带有复选框的 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

为了证明我可以把上面的newValue改成这个

final String newValue = "Sp\u00FClen";

然后我的测试通过了。

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

最佳答案

问题是编译器和 ide (intellij) 使用了不同的编码。 IDE 使用 UTF-8 和编译器 CP1252,可以通过将这两行添加到我的 build.gradle 来更改

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

这样我的案例就按预期进行了。

关于java - 从复选框检索值的编码格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48209684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com