Có ứng dụng Mac OS X Command Line có thể chuyển đổi mã hóa văn bản từ loại này sang loại khác không? (Cụ thể để chuyển đổi Mac OS Roman sang utf8)


16

Tôi muốn gọi một tiện ích dòng lệnh trong Mac OS X 10.8 cung cấp cho tôi khả năng chuyển đổi tệp văn bản được lưu trong mã hóa Western Mac OS Roman tiêu chuẩn sang UTF-8 chung chung hơn.

Tôi sẽ gọi tiện ích từ AppleScript mà tôi đã tạo. AppleScript cực kỳ chậm khi làm việc với các khối văn bản rất lớn. Như vậy, tôi muốn thực hiện phân tích cú pháp và chuyển đổi văn bản của mình bằng dòng lệnh OS X. Tôi đã tìm thấy một công cụ gọi là "sed", cho phép tôi thực hiện phân tích cú pháp văn bản. Tuy nhiên, vẫn còn nhiều yếu tố của tệp cần được dọn sạch, các ký tự xuất hiện dưới dạng rác nếu tệp được mở dưới dạng utf-8 (ví dụ: dấu ngoặc kép thông minh và dấu chấm lửng).

Tôi nghĩ rằng việc buộc chuyển đổi mã hóa văn bản có thể giúp loại bỏ tất cả các ký tự không phải là utf8 trong tệp. Tuy nhiên, tôi không thể thấy "sed" có thể dễ dàng chuyển đổi mã hóa văn bản như thế nào.

Tôi đã lưu tệp temp txt, như MacRoman, vào đĩa bằng cách sử dụng các thường trình AppleScript tích hợp.

Có ai trong số các bạn có bất kỳ ý tưởng nào về một công cụ dòng lệnh tích hợp có thể chuyển đổi mã hóa văn bản không? Dòng lệnh cho hiệu suất và tích hợp sẵn, vì những người dùng khác trong tập lệnh của tôi sẽ không nhất thiết phải có bộ công cụ phù hợp nếu nó không được tích hợp sẵn.

Cảm ơn bạn đã giúp đỡ!


Lệnh là iconv.
bmargulies

@bmargulies: Khi tôi thử iconv trên một tệp được mã hóa trong MacRoman và cố gắng chuyển đổi nó thành UTF-8, tôi nhận được các ký tự rác thay cho "các ký tự bất thường" ban đầu. Ví dụ, dấu chấm lửng chuyển thành "Äö√Ѭ∂‚Äö√Ѭ∂". Tôi hy vọng dấu chấm lửng sẽ chuyển đổi duyên dáng thành sáu thời kỳ. Báo giá thông minh là như nhau, họ cũng chuyển đổi thành văn bản kỳ lạ, biến thành "Äö√Ñ√≤". Cú pháp mà tôi sử dụng là: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Có cú pháp CLI cụ thể nào sẽ cho iconv chuyển đổi duyên dáng tất cả văn bản thành các thay thế phù hợp không?

Và những lý lẽ nào bạn vượt qua?
bmargulies

@ Darkstar - thủ tục tương tự của bạn làm việc tốt cho tôi. Bạn có chắc chắn nguồn của bạn đã ở MacRoman?
Tom Gewecke

1
Excel không nên có vấn đề này, bạn sẽ có thể đặt mã hóa cho nhập khẩu thành bất cứ điều gì bạn muốn, ví dụ: xem superuser.com/questions/280603/
mẹo

Câu trả lời:


8

Một cách khác để chuyển đổi các ký tự không phải ASCII thành các biến thể ASCII là sử dụng iconv -t ASCII//TRANSLIT:

$ echo ‘’“”–—…äé | iconv -t ASCII//TRANSLIT
''""--..."a'e

ASCII//IGNOREsẽ loại bỏ các ký tự không phải ASCII, nhưng bạn cũng có thể làm điều đó với ví dụ tr -dc '\0-\177'.


Có cho iconvphép phiên âm: ä → a "?
dan

@danielAzuelos Tôi không biết. Cách nhân vật được thay thế phụ thuộc vào việc thực hiện mặc dù: ví dụ như iconv mà đi kèm với Debian thay thế ächỉ với a.
Lri

28

iconv chắc chắn là công cụ được lựa chọn ở đây:

iconv -f MACROMAN -t UTF-8 your-roman-encoded-file.txt > utf-8-encoded-file.txt

Chạy iconv --listđể xem danh sách tất cả các mã hóa được hỗ trợ.


một khi tôi nhận ra rằng đó không phải là MacRoman, nhưng là "iso-8859-1", tôi đã thử lại. Nó vẫn không làm những gì tôi muốn nó làm. Tôi không nghĩ iconv có thể làm những gì tôi muốn nó: duyên dáng thay thế tất cả các nhân vật mở rộng ưa thích bằng các dấu chấm và dấu nháy đơn tiêu chuẩn và dấu ngoặc kép.
Darkstar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.