Tôi đang tìm cách so sánh hai chuỗi Java tương đương về mặt từ điển nhưng không giống nhau ở mức byte.So sánh hai chuỗi có từ điển tương đương nhưng không giống nhau ở mức byte
Chính xác hơn lấy tên tập tin sau "baaaé.png", ở cấp độ byte nó có thể được biểu diễn theo hai cách khác nhau:
[98, 97, 97, 97, -61, -87 , 46, 112, 110, 103] -> "é" được mã hóa với 2 byte
[98, 97, 97, 97, 101, -52, -127, 46, 112, 110, 103] -> "é" được mã hóa với 3 byte
byte[] ch = {98, 97, 97, 97, -61, -87, 46, 112, 110, 103};
byte[] ff = {98, 97, 97, 97, 101, -52, -127, 46, 112, 110, 103};
String st = new String(ch,"UTF-8");
String st2 = new String(ff,"UTF-8");
System.out.println(st);
System.out.println(st2);
System.out.println(st.equals(st2));
Sẽ tạo ra kết quả sau:
baaaé.png
baaaé.png
false
Có cách nào để so sánh sao cho phương thức bằng trả về đúng không?
Chúng không hiển thị giống nhau ở đây. –
@dystroy dẫn chúng tôi xem xét lại câu lệnh "_lexicographically equivalent_" :) – Fallup
@dystroy Biểu mẫu chuẩn hóa ưu tiên (mạnh) cho web là NFC. Rõ ràng trình duyệt web của bạn có các phím tắt dễ dàng và chỉ hỗ trợ NFC, không phải NFD. Đối với những gì nó có giá trị, tôi làm như vậy. Rõ ràng các trình duyệt web không bận tâm thực hiện NFD. Tuy nhiên, tôi có thể sao chép và dán cả hai ví dụ vào một ứng dụng khác hỗ trợ cả NFC và NFD và chúng hiển thị giống hệt nhau. – Celada