Bộ chuyển đổi văn bản sang CSV miễn phí

Chuyển đổi dữ liệu văn bản dạng bảng sang định dạng CSV. Phát hiện tự động dấu phân cách, xử lý dấu nháy và xem trước trước khi tải xuống.

Dữ liệu của bạn không bao giờ rời khỏi thiết bị

Về định dạng CSV

CSV (Comma-Separated Values, giá trị được phân tách bằng dấu phẩy) là một định dạng văn bản đơn giản để lưu trữ dữ liệu dạng bảng. Mỗi dòng đại diện cho một bản ghi và các giá trị được phân tách bằng dấu phẩy. CSV được hỗ trợ rộng rãi bởi bảng tính, cơ sở dữ liệu và công cụ phân tích.

Tại sao chuyển sang CSV?

Câu hỏi thường gặp

Công cụ hỗ trợ những dấu phân cách nào?

Nó tự động phát hiện tab, khoảng trắng, dấu phẩy, dấu chấm phẩy và dấu gạch đứng. Bạn cũng có thể xác định dấu phân cách tùy chỉnh một ký tự.

Làm thế nào để xử lý các trường có chứa dấu phẩy?

Bật tùy chọn « Đặt dấu nháy quanh các trường có chứa dấu phẩy » để bao chúng bằng dấu nháy, làm cho chúng tuân thủ CSV.

Tôi có thể bao gồm tiêu đề không?

Có, bật tùy chọn « Bao gồm dòng tiêu đề » nếu dòng đầu tiên của bạn chứa tên cột.

Lịch sử ngắn về CSV, định dạng xuất hiện trước cả đặc tả định nghĩa nó

CSV là định dạng mà tất cả mọi người đều dùng nhưng không ai sở hữu. Nguồn gốc của nó mang tính không chính thức. Tài liệu ghi nhận sớm nhất về quy ước phân cách bằng dấu phẩy có niên đại từ năm 1972, khi IBM Fortran (level H extended) hỗ trợ input/output theo hướng danh sách, trong đó dấu phẩy đóng vai trò phân cách giữa các giá trị trên một dòng. Suốt thập niên 1970 và 1980, mọi cơ sở dữ liệu, bảng tính, gói thống kê và ứng dụng kế toán cần trao đổi dữ liệu với công cụ khác đều tự phát minh ra một biến thể nào đó của «các giá trị được phân cách bằng một ký tự nào đó trên các dòng được phân cách bằng một ký tự khác.» Không có đặc tả. Không có tổ chức quản lý. Không có triển khai chuẩn mực. Chỉ có sự đồng thuận, theo nghĩa lỏng lẻo nhất có thể.

Đến đầu những năm 2000, cái giá của sự hỗn loạn không còn có thể bỏ qua được. IETF cuối cùng đã chấp nhận một đặc tả, RFC 4180, «Common Format and MIME Type for Comma-Separated Values (CSV) Files,» được xuất bản vào tháng 10 năm 2005 bởi Yakov Shafranovich. RFC 4180 ngắn gọn, chỉ vài trang, và nó pháp điển hóa những gì hầu hết mọi người đã hội tụ: dấu phẩy làm phân cách trường, dấu ngoặc kép là ký tự bao bọc tùy chọn cho các trường chứa dấu phẩy, ngoặc kép hoặc ký tự xuống dòng, ngoặc kép nhân đôi ("") là cách thoát một ngoặc kép đơn nghĩa trong trường được bao bọc, CRLF làm ký tự kết thúc dòng, và text/csv là kiểu MIME đăng ký với IANA. Đặc tả cũng định nghĩa tham số header tùy chọn cho kiểu MIME để người gửi có thể thông báo cho người nhận biết dòng đầu tiên có phải là hàng tiêu đề hay không.

RFC 4180 mang tính thông tin, không phải tiêu chuẩn bắt buộc. Tuân thủ nó là tự nguyện. Nhưng nó cho chúng ta một mục tiêu, điều gần nhất mà CSV có như là định nghĩa về «đúng.» Một tài liệu sau đó, «Model for Tabular Data and Metadata on the Web» (CSVW, 2015) của W3C, cố gắng mở rộng câu chuyện siêu dữ liệu cho CSV bằng cách đính kèm một file JSON phụ trợ cho biết mỗi cột là gì và cách diễn giải nó. CSVW được trích dẫn rộng rãi nhưng hiếm khi được triển khai.

«CSV» ngoài thực tế không giống như RFC 4180 định nghĩa

Bất kỳ ai từng nhận một file CSV từ người lạ đều biết hình dạng của vấn đề. Những bất đồng chia thành nhiều trục:

Bẫy BOM

Phần này xứng đáng có mục riêng vì nó là nguồn gây đau đớn CSV xuyên nền tảng phổ biến nhất. Microsoft Excel sẽ không tự nhận diện file CSV mã hóa UTF-8 trừ khi file bắt đầu bằng UTF-8 byte order mark: ba byte EF BB BF, mã hóa ký tự Unicode U+FEFF. Không có BOM, Excel mở file bằng code page kế thừa của locale Windows của người dùng (Windows-1252 ở phương Tây, Shift_JIS ở Nhật, GBK ở Trung Quốc đại lục). Bất kỳ ký tự non-ASCII nào (chữ có dấu, ký hiệu tiền tệ, emoji, ký tự CJK) đều bị mã hóa sai.

Cách sửa là thêm BOM vào đầu file. Nhưng cái giá là mọi thứ khác đều bị nghẹn với nó. Apple Numbers (cho đến các phiên bản gần đây) hiển thị BOM như một ký tự đơn nghĩa trong ô đầu tiên. Nhiều công cụ dòng lệnh (awk, cut, sed phiên bản cũ) coi BOM là một phần của trường đầu tiên, vì vậy một tiêu đề đáng lẽ đọc là name lại đọc thành name. Hầu hết parser CSV JavaScript bỏ qua nó; nhiều quy trình module csv Python cũ hơn không làm vậy (bạn phải mở file với codec utf-8-sig). Vì một công cụ trực tuyến miễn phí không thể biết người dùng sẽ mở file ở đâu, bỏ qua BOM và hướng dẫn người dùng Excel sử dụng Data → From Text/CSV (luôn cho phép người dùng chọn UTF-8 rõ ràng) là mặc định hợp lý.

Excel cung cấp ít nhất bốn định dạng «CSV»

Hộp thoại «Save As» của Excel cung cấp nhiều biến thể CSV, và sự khác biệt có ý nghĩa:

Nhãn hiển thị với người dùng nói «CSV» theo bốn cách khác nhau. Nội dung file thực tế khác nhau đáng kể. Đây là thực tế mà converter phải hoạt động trong đó.

Tại sao chuyển đổi văn bản → CSV, cụ thể là như vậy

Hầu hết các «công cụ CSV» trực tuyến chạy theo hướng ngược lại: nhận CSV, xuất ra thứ gì khác (JSON, bảng HTML, câu lệnh SQL INSERT, PDF có thể in). Cái này chạy ngược lại: nhận văn bản lộn xộn, tạo ra CSV sạch. Đó là trường hợp sử dụng cho:

Excel sẽ viết lại dữ liệu của bạn, đôi khi một cách im lặng

Một số bẫy CSV phổ biến đánh trúng ngay cả người dùng cẩn thận:

Công cụ này đứng ở đâu trong các lựa chọn thay thế CSV hiện đại

CSV tồn tại vì nó là văn bản thuần túy và con người có thể đọc được. Đối với trao đổi dữ liệu nghiêm túc, một số định dạng đã chiếm lĩnh thị phần của nó trên các chiều cụ thể:

Đối với một converter trực tuyến miễn phí nhắm đến các nhà phát triển và nhân viên văn phòng, CSV vẫn là định dạng đầu ra phù hợp vì nó là ngôn ngữ chung của việc nhập dữ liệu ở khắp nơi. Các lựa chọn thay thế hiện đại tồn tại; chúng chưa thay thế được CSV trong hộp thư đến.

Câu hỏi thêm

Tôi có nên thêm UTF-8 BOM vào đầu ra không?

Nếu file được dùng để nhấp đúp trong Excel trên Windows, có, không có BOM, Excel mở nó bằng code page kế thừa và làm hỏng văn bản non-ASCII. Nếu đích đến là thứ gì khác (Apple Numbers, script dòng lệnh, form tải file web), bỏ qua BOM. Con đường an toàn nhất là bỏ qua BOM và hướng dẫn người dùng Excel nhập qua Data → From Text/CSV, nơi họ có thể chọn UTF-8 rõ ràng.

File CSV của tôi mở với một ô mỗi hàng trong Excel, có gì sai không?

Hầu như luôn là lỗi phân cách không khớp. Bạn đang ở locale mà Excel mong đợi dấu chấm phẩy (hầu hết lục địa châu Âu), nhưng file dùng dấu phẩy, hoặc ngược lại. Mở bằng Data → From Text/CSV thay vì nhấp đúp; trình thuật sĩ đó cho phép bạn chọn dấu phân cách rõ ràng. Hoặc lưu file từ menu Save As của Excel bằng biến thể khớp với dấu phân cách địa phương của bạn.

Sự khác biệt giữa TSV và CSV là gì?

TSV dùng ký tự tab làm phân cách thay vì dấu phẩy, với kiểu MIME riêng text/tab-separated-values và đăng ký IANA. Ưu điểm của TSV là dữ liệu thực tế hiếm khi chứa tab đơn nghĩa, vì vậy quoting hầu như không bao giờ cần thiết; nhược điểm là tab không nhìn thấy được trong trình soạn thảo văn bản và hành vi sao chép-dán khác nhau. Bộ máy trích dẫn của CSV khiến nó an toàn cho các trường chứa dấu phân cách; TSV hầu như tránh hoàn toàn vấn đề này.

Có công cụ kiểm tra lỗi CSV nào tôi có thể chạy trước khi chia sẻ file không?

Có, để sử dụng dòng lệnh, csvkit's csvclean báo cáo các hàng có số cột sai. CLI frictionless của Frictionless Data xác thực theo schema tùy chọn. Để làm việc trên trình duyệt, PapaParse báo cáo lỗi phân tích từng dòng. Xác thực nghiêm ngặt theo RFC 4180 (ký tự kết thúc dòng CRLF, escape ngoặc kép nhân đôi) hiếm khi gặp trong thực tế; hầu hết parser chấp nhận bất kỳ biến thể phổ biến nào.

Công cụ liên quan