Encode canonical charset names differ from Perl, breaking IO::HTML
还没有人认领这个 Issue。
评估
调研方向
从 PerlOnJava 的 Encode 实现及其现有兼容性测试入手,然后在 JVM 和解释器后端上重现 canonical-name 失败。为 ISO-8859-15 和 cp1252 映射添加针对性的回归测试覆盖,并验证 IO::HTML 1.004 测试套件在两个后端上都能通过。
由索引模型根据 Issue 内容生成。
描述
Summary
IO::HTML 1.004 passes its complete upstream test suite under system Perl but fails 23 of 165 tests under PerlOnJava because Encode::find_encoding(...)->name returns Java-style charset names instead of Perl's canonical names.
Reproduction
CPAN random tester run: 20260918-141920-96054
Distribution: IO::HTML 1.004
System Perl 5.42.2:
All tests successful.
Files=5, Tests=165
Result: PASS
PerlOnJava JVM backend:
Files=5, Tests=165
Result: FAIL
Failed 2/5 test programs. 23/165 subtests failed.
The interpreter backend reproduces the same 23 failures.
Failing tests
t/10-find.t: 14 failurest/20-open.t: 9 failurest/00-all_prereqs.t,t/00-load.t, andt/30-outfile.t: pass
The failures are all charset-name mismatches:
got: ISO-8859-15
expected: iso-8859-15
got: windows-1252
expected: cp1252
The affected inputs include HTML declarations for ISO-8859-15 and ISO-8859-1, including declarations near the 1024-byte scan boundary.
Likely cause
IO::HTML calls Encode::find_encoding($charset) and then uses the returned object's name method. Perl returns Encode's canonical names (iso-8859-15 and cp1252), while PerlOnJava returns Java canonical charset names (ISO-8859-15 and windows-1252).
The PerlOnJava Encode implementation already maps US-ASCII to ascii and UTF-8 to utf-8-strict, but otherwise returns the Java charset name unchanged. The canonical-name mapping needs to cover the relevant Perl aliases and should preserve the expected behavior for both backends.
Expected behavior
For equivalent Encode::find_encoding calls, PerlOnJava should return an Encode::Encoding object whose name matches Perl's canonical name, including at least:
ISO-8859-15->iso-8859-15windows-1252/ISO-8859-1->cp1252
Please add focused regression coverage for the canonical names and verify IO::HTML 1.004 on both the JVM and interpreter backends after the fix.
Related project context
The project module-compatibility notes already identify encoding-name case/alias normalization as an outstanding Encode compatibility gap affecting IO::HTML. This report provides a complete upstream reproduction and confirms the defect on both PerlOnJava execution backends.
- 主要语言
- Perl
- 星标
- 64
- 派生
- 6
- 平均合并
- 5 小时 11 分钟
- 30 天内合并 PR
- 168
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
fglock/PerlOnJava 的其他 Issue
-
area:cpan-port area:unicode bug
难度 2/5 1-3 小时 新手友好度 88/100
fglock/PerlOnJava#1341 ·
-
area:backend area:runtime enhancement
难度 4/5 3-5 天 新手友好度 45/100
fglock/PerlOnJava#1494 ·
-
area:backend area:runtime enhancement
难度 4/5 3-5 天 新手友好度 45/100
fglock/PerlOnJava#1492 ·
-
area:parser bug
难度 3/5 1-2 天 新手友好度 65/100
fglock/PerlOnJava#1491 ·
-
难度 4/5 3-5 天 新手友好度 45/100
fglock/PerlOnJava#1487 ·
查看 fglock/PerlOnJava 的全部 Issue
相似的 Issue
-
documentation Needs Triage
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
trizen/youtube-viewer#456 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
-
connectivity 未关闭
难度 1/5 1 小时以内 新手友好度 80/100
-
Common US ingredient names are not recognized, so about 12.4k US products miss an allergen warning 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
openfoodfacts/openfoodfacts-server#14657 · 4 条评论 ·