2013-09-21 29 views
6

Tôi đã nhận được lỗi sau khi lưu một liên hệ mới. Có cách nào để đúc "\xC2" để có thể buộc phải lưu ở định dạng UTF-8 không?Mã hóa :: UndefinedConversionError: " xC2" từ ASCII-8BIT sang UTF-8

c = Contact.new 
c.save! 

Encoding::UndefinedConversionError: "\xC2" from ASCII-8BIT to UTF-8: INSERT INTO "contacts" ("body", "created_at", "email", "updated_at") VALUES (?, ?, ?, ?)

Trả lời

17

chuỗi của bạn là ở một số mã hóa khác, nhiều khả năng iso-8859-1, vì vậy bạn nên chạy này để chuyển đổi nó:

"\xC2".encode("iso-8859-1").force_encoding("utf-8") 
=> "Ã" 

Xem this question để biết thêm thông tin liên quan đến này vấn đề.

+0

Đã xảy ra xung quanh việc chuyển đổi một số mã sử dụng HtmlEntities từ 1.8.7 đến 1.9.3 - Điều này đã giúp. Cảm ơn! – Subimage

2

Đối với những gì nó có giá trị, tôi đã có vấn đề này bật lên khi tôi đọc trong một tập tin mã có biểu tượng độ (°) trong một bình luận. Khi mã hóa nó cho json, ruby ​​trở nên vô cùng bất hạnh.

Điều gì đã ném tôi cho một vòng lặp là không có ký tự "Ã" trong mã, vì vậy nó chỉ là điều cần lưu ý.