2012-02-07 51 views
16

Có vẻ là một vấn đề khá ấn tượng, nhưng tôi chưa thể tìm ra giải pháp; có lẽ bởi vì nó có rất nhiều nhiều hương vị. Đây là mặc dù. Tôi đang cố gắng đọc một số tệp phân tách bằng dấu phẩy (đôi khi các dấu phân tách có thể độc đáo hơn một chút so với dấu phẩy, nhưng dấu phẩy sẽ đủ cho bây giờ).Tự động phát hiện mã hóa ký tự trong Java

Các tệp được coi là chuẩn hóa trong ngành, nhưng gần đây chúng tôi đã thấy nhiều loại tệp bộ ký tự khác nhau sắp xuất hiện. Tôi muốn có thể thiết lập một BufferedReader để bù đắp cho điều này.

Một cách khá chuẩn để thực hiện việc này và phát hiện xem nó có thành công hay không?

Suy nghĩ đầu tiên của tôi về phương pháp này là lặp qua các bộ ký tự đơn giản-> phức tạp cho đến khi tôi có thể đọc tệp mà không có ngoại lệ. Không chính xác lý tưởng mặc dù ...

Cảm ơn sự quan tâm của bạn.

+2

Phát hiện mã hóa là một vấn đề rất khó, và đối với một số mã hóa, cách duy nhất để biết một trong số đó là đúng là phân tích theo ngữ cảnh (một nhiệm vụ rất nhỏ). Nếu bạn biết chính xác mã hóa nào bạn cần hỗ trợ (ví dụ: UTF-16, UTF-8, ISO-8859-1), nó có thể trở nên dễ dàng hơn, nhưng nó phụ thuộc vào những mã hóa đó là gì. –

+2

nếu bạn không nhận được một ngoại lệ không nhất thiết có nghĩa là nó đã thành công – MozenRath

+0

Tôi liên hệ với bạn. –

Trả lời

10

Universalchardet của Mozilla được cho là bộ phát hiện hiệu quả trên mạng. juniversalchardet là cổng java của nó. Còn một cổng nữa. Đọc SO này để biết thêm thông tin Character Encoding Detection Algorithm

+1

tôi thấy rằng giấy phép nó không apache. khác nhau như thế nào so với apache? –

Các vấn đề liên quan