Câu hỏi thường gặp có phần gây hiểu lầm, bắt đầu từ việc sử dụng “cần”, sau đó sử dụng “yêu cầu” không nhất quán về cùng một điều. Bản thân chuẩn Unicode (được trích dẫn trong FAQ) chính xác hơn. Về cơ bản, bạn không nên mong đợi các chương trình xử lý các chuỗi tương đương về mặt kinh điển là khác nhau, nhưng bạn cũng không nên mong đợi tất cả các chương trình xử lý chúng giống hệt nhau.
Trong thực tế, nó thực sự phụ thuộc vào những gì phần mềm của bạn cần làm. Trong hầu hết các trường hợp, bạn không cần bình thường hóa và việc chuẩn hóa có thể phá hủy thông tin cần thiết trong dữ liệu.
Ví dụ: U + 0387 GREEK ANO TELEIA (·) được định nghĩa là tương đương chuẩn với U + 00B7 MIDDLE DOT (·). Đây là một sai lầm, vì các ký tự thực sự khác biệt và phải được hiển thị khác và xử lý khác nhau trong quá trình xử lý. Nhưng đã quá muộn để thay đổi điều đó, vì phần Unicode này đã được khắc vào đá. Do đó, nếu bạn chuyển đổi dữ liệu sang NFC hoặc loại bỏ sự khác biệt giữa các chuỗi tương đương về mặt kinh điển, bạn có thể gặp phải các ký tự sai.
Có những rủi ro mà bạn thực hiện bằng cách không phải bình thường hóa.Ví dụ, chữ “ä” có thể xuất hiện dưới dạng một ký tự Unicode đơn U + 00E4 LATIN NHỎ THƯ LẠI A WITH DIAERESIS hoặc dưới dạng hai ký tự Unicode U + 0061 LATIN NHỎ LỌC A U + 0308 COMAINESIS DIAERESIS. Nó sẽ chủ yếu là dạng cũ, tức là dạng precomposed, nhưng nếu nó là phần sau và mã của bạn kiểm tra dữ liệu chứa “ä”, chỉ sử dụng dạng precomposed, sau đó nó sẽ không phát hiện ra cái sau. Nhưng trong nhiều trường hợp, bạn không làm những việc như vậy nhưng chỉ lưu trữ dữ liệu, nối chuỗi, in chúng, v.v. Sau đó, có một rủi ro là hai biểu diễn này dẫn đến kết quả hiển thị hơi khác nhau.
Điều quan trọng là liệu phần mềm của bạn có chuyển dữ liệu ký tự sang phần mềm khác không. Người nhận có thể mong đợi, do các giả định tiềm ẩn ngây thơ hoặc có ý thức và theo cách được ghi nhận tài liệu, đầu vào của nó được chuẩn hóa.
Nguồn
2013-04-13 11:40:11
«NFC là hình thức tốt nhất cho văn bản chung, vì nó tương thích hơn với các chuỗi được chuyển đổi từ mã hóa cũ. ... NFD và NFKD là hữu ích nhất để xử lý nội bộ. »Là một số câu lệnh không có thật. Mặc dù các chuỗi kế thừa có thể ở dạng mà khi được chuyển thành Unicode ở dạng NFC, để bảo trì trong tương lai (mã luôn được sử dụng trong điều kiện không lường trước được), bạn sẽ tốt hơn nếu bạn chuyển đổi sang NF [CD] một cách rõ ràng. – ninjalj