Các múi giờ cho (ngày) -times và mã hóa cho chuỗi không có vấn đề nếu bạn không có chuyển đổi giữa chúng. Trong Ruby 1.9 và 2.0, các mã hóa dường như là các múi giờ mới từ các phiên bản Ruby cũ hơn, chúng không gây ra gì ngoài rắc rối. Iconv đã được thay thế bằng các chức năng mã hóa gốc. Làm cách nào để chuyển đổi từ tiêu chuẩn UTF-8 sang ISO-8859-1, ví dụ như để sử dụng trong các hệ thống Windows? Trong giao diện điều khiển Ruby 2.0, encode function không hoạt động, mặc dù nó có thể chuyển đổi từ mã hóa nguồn sang mã hóa đích thông qua encode(dst_encoding, src_encoding) → str
?Làm thế nào để chuyển đổi UTF-8 thành ISO-8859-1 trong Ruby 2.0?
>> "ABC äöüÄÖÜ".encoding
=> #<Encoding:UTF-8>
>> "ABC äöüÄÖÜ".encode("UTF-8").encode("ISO-8859-1")
=> "ABC \xE4\xF6\xFC\xC4\xD6\xDC"
>> "ABC äöüÄÖÜ".encode("ISO-8859-1","UTF-8")
=> "ABC \xE4\xF6\xFC\xC4\xD6\xDC"
Tôi đang sử dụng Ruby 2.0.0 (bản sửa đổi 41674) trên hệ thống Linux.
Có vấn đề gì? '" ABC äöüÄÖÜ ".encode (" ISO-8859-1 "," UTF-8 ")' chuyển đổi UTF-8 sang Latin-1 và trả về chuỗi Latin-1, '" ABC äöüÄÖÜ "' đã là UTF-8 do đó đối số thứ hai để 'mã hóa' là không liên quan. Bạn đang mong đợi điều gì "kỳ vọng" (ISO-8859-1 "," UTF-8 ")' để làm và kỳ vọng của bạn khác với điều gì xảy ra? –
Chuỗi "ABC \ xE4 \ xF6 \ xFC \ xC4 \ xD6 \ xDC" không giống như một văn bản có mã hóa hợp lệ với tôi, hay không? Ít nhất các ký tự đặc biệt không được hiển thị chính xác. Mục đích là để chuyển đổi chuỗi UTF-8 cho một nhập khẩu Excel. Cho đến nay nó dường như không hoạt động tốt. Ý tưởng là nếu tôi quản lý để chuyển đổi UTF-8 sang ISO-8859-1, thì Excel cũng sẽ nhập và hiển thị các văn bản trên Windows. – 0x4a6f4672
Đó là chuỗi mã hóa Latin-1 được hiển thị trong thiết bị đầu cuối UTF-8. –