Office 365/Excel tạo ra các tệp CSV định dạng UTF-8 không chính xác.
Chào, tôi đang gặp sự cố khi lưu tập tin bằng định dạng "CSV UTF-8 (phân tách bằng dấu phẩy)", đây là định dạng CSV đầu tiên trong danh sách thả xuống "Lưu dưới dạng" với 4 định dạng khác nhau.
Hãy xem xét tệp Excel sau:
| Mã bưu chính | Tên | Họ |
| 90210 | Jonathan "jon" | Nai |
Khi tôi lưu tệp này dưới dạng "CSV UTF-8", tôi nhận được kết quả sau:
Mã bưu điện, Tên, Họ
90210,"Jonathan "jon""onat",Doe
Việc xử lý các ký tự " bị sai, tôi đoán đây là vấn đề liên quan đến LTR/RTL nhưng tôi yêu cầu ký tự 8 bit, chứ không phải RTL.
Khi tôi lưu dưới dạng "CSV (phân tách bằng dấu phẩy)", tôi nhận được kết quả chính xác, phù hợp với tiêu chuẩn ISO (ai mà ngờ lại có tiêu chuẩn đó!!):
Mã bưu điện, Tên, Họ
90210,"Jonathan ""jon""",Doe
Tôi chưa từng sử dụng hai loại CSV còn lại là "CSV (Windows)" hoặc "CSV (Macintosh)" nên không thể nhận xét về chúng.
Vậy câu hỏi đặt ra là: đây là lỗi hay là hành vi mong muốn? Nếu là hành vi mong muốn, xin vui lòng giải thích vì ngay cả Excel cũng không thể đọc lại dữ liệu này một cách chính xác.
Một số phiên bản:
- Hệ điều hành = Windows 10
- Office = Office 365, phiên bản 1610 Build 7466.2038
- Ngôn ngữ được thiết lập là tiếng Anh Anh (UK English), vì vậy dấu thập phân là "." và dấu phân cách hàng nghìn là ",". Tôi không sử dụng bất kỳ ngôn ngữ nào khác, thậm chí tôi đã xóa cả ngôn ngữ tiếng Anh Mỹ (US English) khi thiết lập máy.
Cảm ơn sự giúp đỡ của bạn.
P.S. - Tôi đã bắt đầu sử dụng định dạng thứ 2 nên tạm thời mọi thứ ổn, nhưng tôi đã dành khoảng 8 tiếng đồng hồ để tìm hiểu lý do tại sao dữ liệu này không được tải vào cơ sở dữ liệu của tôi một cách chính xác. Vấn đề nằm ở dòng 78.000 trong dữ liệu của tôi, chứ không phải dòng 1. Tôi đã cho rằng Excel hoạt động hoàn hảo (như thường lệ) nên đã không kiểm tra ở đây.
Trả lời:
Chào Mat,
Để hỗ trợ bạn giải quyết vấn đề này, chúng tôi khuyên bạn nên làm theo các bước được hướng dẫn bên dưới về cách lưu tệp định dạng .csv UFT-8:
- Mở tệp " *.xlsc " trong Microsoft Excel.
- Nhấp vào Menu > Lưu thành .
- Nhập tên bạn muốn đặt cho tập tin.
- Trong mục " Lưu dưới dạng ", hãy chọn Văn bản Unicode .
- Nhấp vào Lưu .
- Mở tập tin đã lưu của bạn bằng Microsoft Notepad.
- Thay thế tất cả các ký tự tab bằng dấu phẩy (" , ").
- Chọn ký tự tab (chọn và sao chép khoảng trắng giữa hai tiêu đề cột).
- Mở cửa sổ "Tìm và thay thế" (Nhấn Ctrl + H ) và thay thế tất cả các ký tự tab bằng dấu phẩy.
- Nhấp vào Lưu thành .
- Đặt tên cho tệp và thay đổi Encoding: thành UTF-8 .
- Đổi phần mở rộng tệp từ "*.txt" thành "*.csv".
- Nhấp vào Lưu .
- Mở tệp .csv trong Excel để xem dữ liệu của bạn.
Nếu gặp sự cố khi thực hiện các bước trên, đừng lưu tệp của bạn ở định dạng Excel vì điều đó sẽ gây ra lỗi mã hóa. Do đó, hãy làm theo các bước khắc phục sự cố bên dưới:
- Tìm tập tin.
- Nhấp chuột phải vào tệp > chọn Mở bằng > Notepad .
- Chọn Tệp > Lưu thành .
- Điều hướng đến thư mục mà bạn muốn lưu tệp tin.
- Nhập tên cho tệp của bạn và thêm đuôi .csv vào cuối tên tệp.
- Chọn mã hóa UTF-8.
- Nhấp vào Lưu .
- Mở tệp vừa tạo trong Excel để xem dữ liệu của bạn.
Hãy cập nhật kết quả cho chúng tôi nhé.
Cảm ơn.
Comments
Post a Comment