Tôi đang tạo tệp CSV cần được mở và xem xét trong Excel khi chúng đã được tạo. Có vẻ như Excel yêu cầu mã hóa khác với UTF-8.Ruby: Cách tạo tệp CSV có mã hóa thân thiện với Excel
Dưới đây là cấu hình và hệ mã của tôi:
csv_config = {col_sep: ";",
row_sep: "\n",
encoding: Encoding::UTF_8
}
csv_string = CSV.generate(csv_config) do |csv|
csv << ["Text a", "Text b", "Text æ", "Text ø", "Text å"]
end
Khi mở này trong Excel, các ký tự đặc biệt không được hiển thị đúng:
Text a Text b Text æ Text ø Text å
Bất kỳ ý tưởng làm thế nào để đảm bảo mã hoá thích hợp?
Hãy thử đặt '# encoding: UTF-8' làm dòng đầu tiên của tệp Ruby (thứ hai nếu bạn có dòng băm-băm,' #!/Usr/bin/env ruby'). Tôi tin rằng bạn đang * viết * trong UTF-8, nhưng tệp nguồn Ruby được lấy để được mã hóa thành US_ASCII. (Với Ruby 2.0+, mã hóa nguồn mặc định là UTF-8) – Amadan
Tôi đang sử dụng 'ruby 2.0.0p247 (2013-06-27 phiên bản 41674) [x86_64-darwin12.4.0]' vì vậy tôi cho rằng điều đó có nghĩa là cài đặt của tôi đã sẵn sàng mặc định là UTF-8. – ChristofferJoergensen
Không có kinh nghiệm với Ruby. Nhưng Excel có thể mở các tệp CSV phân cách bằng dấu chấm phẩy được mã hóa UTF-8. Nhưng tệp phải có BOM ngay từ đầu. Và cho dù dấu chấm phẩy có thể được sử dụng như dấu phân tách phụ thuộc vào miền địa phương hay không. Vì vậy, cách tiếp cận tốt nhất là sử dụng CSV phân tách tab lập trình và mã UTF-16LE được mã hóa. Điều này nên là miền địa phương nhất độc lập. –