Tôi đang viết bộ mã hóa/giải mã BASE64 của riêng mình cho một số môi trường bị hạn chế.Tại sao Base64 của JDK8 sử dụng ISO-8859-1?
Và tôi thấy rằng Base64.Encoder#encodeString nói rằng nó sử dụng ISO-8859-1
để tạo chuỗi từ các byte được mã hóa đó.
Tôi hoàn toàn giả định rằng ISO-8859-1
bộ ký tự cũng bao gồm tất cả các bảng chữ cái base64.
Có lý do nào có thể không sử dụng US-ASCII
không?
Mã chứng minh bạn đúng. [Implementation] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/Base64.java#Base64.Encoder.encodeToString%28byte%5B % 5D% 29) trực tiếp ủy quyền cho ['String (byte [] ascii, int hibyte, int offset, int count)'] (http://docs.oracle.com/javase/8/docs/api/java/lang /String.html#String-byte:A-int-int-int-), một hàm tạo không được dùng vì nó chỉ hữu ích cho việc sử dụng 'hibyte == 0' (đọc iso-latin-1), trong đó có một vòng lặp sao chép được tối ưu hóa. Đó là cách sử dụng hợp lý và được tối ưu hóa trong trường hợp cụ thể này. – Holger
Mặc dù nó sẽ hoạt động tốt nếu tài liệu * đã nói rằng nó đang sử dụng US-ASCII trong khi sử dụng cùng một triển khai. Nhưng nói “ISO-8859-1” trong tài liệu là một con trỏ tốt cho những người triển khai tiềm năng, gợi ý rằng việc sử dụng iso-latin-1 được ưa thích hơn khi sử dụng ASCII tại đây… – Holger
@Holger: Và sẽ rất khó hiểu đối với bất kỳ ai * đang tìm kiếm * tại triển khai và các tài liệu với nhau :) –