2012-01-12 42 views
7

Tôi đang cố gắng tìm ra mã hóa của một tệp trên Windows bằng cách sử dụng Go. Thực hiện một số nghiên cứu, tôi đã tìm thấy nhiều khuyến nghị cho Charset Detectors (chardet) của Mozilla, nhưng chúng rất khó để biên dịch và tôi không có bất kỳ sự may mắn nào.Làm cách nào để phát hiện mã hóa của tệp?

Tôi cũng đã tìm thấy libguess và dường như nó được sử dụng rộng rãi trong Linux, nhưng tôi không thể làm cho nó hoạt động trong Windows.

Cách tốt nhất để giải quyết vấn đề này là gì? Có một thư viện chuẩn thực tế để sử dụng với Go trên Windows không?

+1

Thực ra, đừng mong đợi quá nhiều (có lý do tại sao libguess được đặt tên là lib * guess *). Tôi rất khuyên bạn nên viết bài này: http://www.joelonsoftware.com/articles/Unicode.html –

+0

Cảm ơn! Bài viết rất hữu ích. –

Trả lời

0

Bạn có thể quan tâm đến Enca, Bộ phân tích Charset Cực kỳ Naive. Tôi đoán bạn có thể thử đọc các tập tin bằng cách sử dụng tất cả các mã hóa ứng viên và tính toán bao xa mỗi nỗ lực là từ phân bố tần số ký tự "chuẩn" cho ngôn ngữ. Enca yêu cầu một số thông tin ngôn ngữ, nhưng tôi không chắc liệu nó có sử dụng cách tiếp cận này hay không. (Chỉ là một ý tưởng, nó có thể bị hiểu lầm sai lầm.)

+0

Nhờ chia sẻ thư viện này! Tôi sẽ kiểm tra nó. –

+0

Tôi nhận được enca.exe sau khi thực hiện, nó có thể được biên dịch thành * .lib hoặc * .dll không? –

+0

Có một mục tiêu thư viện trong bản phân phối, nhưng tôi không biết cách tạo một DLL. – zoul

1

Bạn có thể sử dụng gói python: chardet.

+0

Tarball chứa một số bảng tần số ký tự, do đó, cách tiếp cận thống kê có vẻ là một tiêu chuẩn. Trong trường hợp xấu nhất, bạn nên dễ dàng đào các bảng tần số và viết giải pháp tùy chỉnh. – zoul

+0

Có lẽ tôi có thể chuyển gói này sang Go nếu tôi không thể tìm thấy bất kỳ gói nào sẵn sàng để sử dụng. –

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