2011-01-20 25 views
6

Phần mềm kế thừa mà tôi viết lại trong Java sử dụng mã hóa tùy chỉnh (tương tự như Win-1252) làm lưu trữ dữ liệu. Đối với hệ thống mới, tôi đang xây dựng tôi muốn thay thế bằng UTF-8.Cách chuyển đổi tệp được mã hóa tùy chỉnh sang UTF-8 (bằng Java hoặc bằng công cụ chuyên dụng)

Vì vậy, tôi cần phải chuyển đổi các tệp đó sang UTF-8 để cấp dữ liệu cho cơ sở dữ liệu của mình. Tôi biết bản đồ nhân vật được sử dụng, nhưng nó không phải là bản đồ được biết đến rộng rãi. Ví dụ. "A" ở vị trí 0x0041 (như trong Win-1252), nhưng trên 0x0042 có một dấu hiệu trong UTF-8 xuất hiện ở vị trí 0x0102, v.v. Có cách nào dễ dàng để giải mã và chuyển đổi các tệp đó bằng Java không?

Tôi đã đọc nhiều bài đăng nhưng tất cả đều được xử lý bằng mã hóa tiêu chuẩn công nghiệp thuộc loại nào đó, chứ không phải với các mã tùy chỉnh. Tôi hy vọng có thể tạo một tuỳ chỉnh java.nio.ByteBuffer.CharsetDecoder hoặc java.nio.charset.Charset để chuyển nó đến java.io.InputStreamReader như được mô tả trong Câu trả lời đầu tiên here?

Mọi đề xuất đều được chào đón.

Trả lời

9

không cần phức tạp. chỉ thực hiện một mảng của 256 chars

static char[] map = { ... 'A', '\u0102', ... } 

sau đó

read each byte b in source 
    int index = (0xff) & b; // to make it unsigned 
    char c = map[index]; 
    target.write(c); 
Các vấn đề liên quan