Dữ liệu & bảng tính · CSV Trình dọn dẹp
Mã hóa ký tự cho người dùng bảng tính: ASCII, Windows-1252 và UTF-8
· Lý lịch
csv mã hóa data-formats
Mã hóa là sự thỏa thuận về việc byte nào có nghĩa là ký tự nào và tệp CSV không bao giờ nêu rõ chúng sử dụng ký tự nào. Bài đăng này giải thích ASCII, Windows-1252 và UTF-8 một cách đơn giản, tại sao UTF-8 thắng và điều đó có ý nghĩa gì đối với hoạt động xuất khẩu.
'Đó là một vấn đề về mã hóa' như một lời giải thích không giải thích được gì - mã hóa thực sự là gì
Nói “vấn đề mã hóa” xác định ranh giới nhưng không phải là biện pháp khắc phục. Một tệp lưu trữ byte; trang cần có các ký tự trước khi có thể nhận dạng dấu phân cách và dấu ngoặc kép. Nếu thỏa thuận byte-ký tự không đúng, trình phân tích cú pháp có thể nhận được các dấu thay thế ngay cả khi máy trạng thái CSV của nó hoạt động chính xác như được viết.
Thỏa thuận của ToolAcre rất rõ ràng: văn bản đã chọn được đọc là UTF-8 và chỉ dấu thứ tự byte UTF-8 ở đầu mới được xử lý đặc biệt. Hợp đồng hẹp này hữu ích hơn việc giả vờ CSV mang nhãn mã hóa. Người xuất khẩu và người nhận phải đồng ý trước khi có thể tin cậy được việc dọn dẹp cấu trúc.
ASCII: lõi chia sẻ — bảy bit, bảng chữ cái và dấu câu tiếng Anh cũng như lý do tại sao nó phổ biến ở hầu hết mọi mã hóa
ASCII ký tự trùng lặp với UTF-8 đối với các chữ cái, chữ số và dấu câu tiếng Anh quen thuộc được hầu hết cú pháp CSV sử dụng. Đó là lý do tại sao một tệp có thể xuất hiện tốt cho đến khi tên hoặc ký hiệu khách hàng giới thiệu các byte nằm ngoài phạm vi được chia sẻ. Kho lưu trữ hỗ trợ quan sát thực tế này nhưng không phải là nguồn chính cho lịch sử ASCII hoặc niên đại thiết kế chính xác.
Do đó, dấu phẩy và trích dẫn có thể phân tích chính xác trong khi một tên đã bị hỏng. Thành công về mặt cấu trúc không phải là sự trung thực về tính cách. Bao gồm các cố định không phải ASCII khi thử nghiệm xuất vì mẫu hoàn toàn bằng tiếng Anh không thể thực hiện ranh giới mã hóa quan trọng đối với dữ liệu quốc tế.
ASCII trùng lặp là bối cảnh hữu ích, trong khi số lượng bit và lịch sử cần các nguồn bên ngoài
Các trang mã kế thừa chỉ định giá trị byte trong các bảng khu vực và việc sử dụng bảng sai sẽ thay đổi các ký tự. Sổ làm việc đã yêu cầu chi tiết Windows-1252 nhưng ToolAcre không chứa bảng ánh xạ hoặc bộ giải mã có thể chọn. Cấu hình của nó cảnh báo rằng Windows-1252 và Shift-JIS được đọc là UTF-8 và hiển thị các ký tự thay thế.
Xác định nguồn kế thừa thông qua cài đặt của nhà sản xuất hoặc trình kiểm tra nhận biết mã hóa hoạt động từ các byte chưa được xử lý. Đừng yêu cầu trình dọn dẹp này suy ra bảng từ tên. Khi `File.text()` trả về một chuỗi bị hỏng, trình phân tích cú pháp không thể khôi phục các phân biệt byte mà quá trình giải mã đã loại bỏ.
Chi tiết về trang mã kế thừa là bằng chứng bên ngoài kho lưu trữ; ToolAcre không giải mã chúng
UTF-8 có thể biểu thị văn bản ngoài phạm vi chồng chéo ASCII trong khi vẫn giữ nguyên các ký tự cú pháp phổ biến đó. Trình duyệt chuyển đổi các byte đã chọn thành chuỗi JavaScript trước khi phân tích cú pháp. Trong chuỗi đó, tên Unicode và biểu tượng cảm xúc sẽ chuyển vòng qua trình phân tích cú pháp và trình tuần tự hóa của ToolAcre, như các thử nghiệm đã chứng minh.
Bằng chứng này không làm cho mô-đun này trở thành một trình giải thích Unicode hoàn chỉnh. Nó cho biết tuyến đường bảo tồn các chuỗi được giải mã hợp lệ, các trường được trích dẫn và xuất văn bản. Các câu hỏi về biểu mẫu chuẩn hóa, cụm biểu đồ hoặc mọi phép biến đổi Unicode đều nằm ngoài mã và không được suy ra từ một chuyến đi khứ hồi thành công.
ToolAcre thể hiện việc xử lý văn bản UTF-8 chứ không phải mô hình mã hóa Unicode hoàn chỉnh
Dự án chọn UTF-8 vì đó là hợp đồng đầu vào và đầu ra được định cấu hình của nó. Các tệp kho lưu trữ không thiết lập các lý do mang tính lịch sử mà web rộng hơn đã áp dụng UTF-8, vì vậy bài viết này bỏ qua xác nhận quyền sở hữu đã yêu cầu đó. Sự thật về sản phẩm không cần phải có tường thuật về việc áp dụng phổ biến để có thể hành động được.
Đối với các toán tử, tiêu chuẩn hóa có nghĩa là xuất hoặc chuyển đổi sang UTF-8 trước khi tải, xác minh các giá trị đa ngôn ngữ đại diện, sau đó sắp xếp theo thứ tự bảng được đánh giá. Tập lệnh nhận cũng phải mong đợi UTF-8 và quyết định xem tập lệnh đó có chấp nhận BOM hay không. Thỏa thuận ở cả hai phía quan trọng hơn một tuyên bố chung chung về các trường hợp vỡ nợ.
Kho lưu trữ thiết lập UTF-8 làm hợp đồng của công cụ này, chứ không phải tại sao trang web rộng hơn lại chọn nó
U+FEFF ở đầu bị xóa trước khi phát hiện dấu phân cách và kết quả ghi lại `hadBom` để giao diện có thể báo cáo. Xuất có thể thêm cùng một dấu khi khách truy cập chọn tùy chọn. Nếu không có lựa chọn đó, đầu ra sẽ bắt đầu trực tiếp bằng ký tự tiêu đề đầu tiên.
Dấu này có thể giúp một số quy trình làm việc của bảng tính nhận ra UTF-8 nhưng cấu hình cảnh báo rằng các tập lệnh nghiêm ngặt hoặc nhập cơ sở dữ liệu có thể đính kèm nó vào tiêu đề đầu tiên. Sử dụng tùy chọn dành cho người tiêu dùng đã biết, không phải là sự sạch sẽ phổ biến. Chính sách BOM là một phần của hợp đồng giao diện.
Điều này không bao gồm những gì — xuất UTF-16, mã hóa Đông Á và chuẩn hóa các ký tự tổng hợp
UTF-16, mã hóa kế thừa Đông Á và chuẩn hóa Unicode không được triển khai ở đây. Cả hai đều không phát hiện thứ tự byte hoặc sửa chữa ký tự thay thế. Việc đặt tên cho những thiếu sót đó sẽ ngăn người dùng coi việc tải xuống thành công là bằng chứng cho thấy mọi ký tự gốc đều tồn tại.
Nếu có liên quan đến byte không được hỗ trợ, hãy giữ nguyên bản gốc và sử dụng bộ giải mã được thiết kế cho nguồn đó. Sau khi chuyển đổi sang UTF-8 đã xác thực, ToolAcre có thể xử lý cấu trúc CSV được ghi lại của nó. Việc tách giải mã ký tự khỏi phân tích cú pháp hàng giúp chẩn đoán lỗi dễ dàng hơn và tránh phỏng đoán mang tính phá hoại.
Thực hiện mọi lần xuất UTF-8 và nói như vậy — cách ToolAcre CSV sửa chữa mã hóa của Trình dọn dẹp chuyển đổi các bản xuất cũ thành UTF-8 trong trình duyệt của bạn
Đặt UTF-8 một yêu cầu trao đổi rõ ràng và kiểm tra nó bằng các lớp ký tự thực được tập dữ liệu sử dụng. ToolAcre có thể xóa hoặc thêm UTF-8 BOM ở đầu, giữ các chuỗi ô Unicode hợp lệ và chuẩn hóa trích dẫn CSV. Nó không thể thực hiện chuyển đổi kế thừa được hứa hẹn bởi phác thảo ban đầu.
Khi các ký tự thay thế xuất hiện, hãy dừng lại trước khi xóa hoặc lưu lại. Khôi phục từ byte gốc, xác minh tên rồi quay lại. Thứ tự đó bảo vệ thông tin: mã hóa phải chính xác trước khi các thao tác phân cách, trùng lặp và khoảng trắng có thể tạo ra kết quả đáng tin cậy.