Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Encode canonical charset names differ from Perl, breaking IO::HTML

Đang mở
#1,445 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
65/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java, perl
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu với triển khai Encode của PerlOnJava và các bài kiểm tra tương thích hiện có, sau đó tái hiện các lỗi canonical-name trên cả backend JVM và backend trình thông dịch. Bổ sung phạm vi kiểm thử hồi quy tập trung cho các ánh xạ ISO-8859-15 và cp1252, đồng thời xác minh rằng bộ kiểm thử IO::HTML 1.004 vượt qua trên cả hai backend.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:cpan-port area:unicode bug

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 failures
  • t/20-open.t: 9 failures
  • t/00-all_prereqs.t, t/00-load.t, and t/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-15
  • windows-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.

Ngôn ngữ chính
Perl
Star
64
Fork
6
Merge trung bình
5 giờ 38 phút
Pull request đã merge (30 ngày)
170

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của fglock/PerlOnJava

Tất cả issue của fglock/PerlOnJava

Issue tương tự

Thêm issue về Perl

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.