Sửa lỗi mã hóa tiếng Đức trong thư mục và tên tệp (ü = u╠ê, v.v.)


13

Tôi có nhiều tệp zip trong đó có lỗi mã hóa cho các ô tiếng Đức (äüöÄÜÖß). Chúng hiển thị trong cả filename.zip cũng như trong các thư mục và tệp được bao gồm như sau:

  • Fünf = Fu╠ênf
  • Räuber = Ra╠êuber
  • Überfall = U╠êberfall

vân vân Thông thường tôi sử dụng Linux, nhưng vì vấn đề này, tôi cũng đã dùng thử Windows7 VM nhưng nó lại gây ra lỗi mã hóa tương tự. Trên Linux, tôi đã chơi xung quanh với confmv và detox, nhưng không thành công.

Khi tôi sử dụng

  • confmv -f iso-8859-1 -t utf8 --replace --notest -r *

Tôi nhận được "Bỏ qua, đã UTF-8".

Bất kỳ suy nghĩ về điều này?


Bạn đang sử dụng hệ thống cổ nào? Tất cả các bản phân phối Linux hiện tại sử dụng UTF-8 ngay bây giờ.
BatchyX

Đây có thể là một vấn đề hệ thống tập tin? Có lẽ nó không được gắn trong UTF?
terdon

Tôi sử dụng Linux Mint 13 (dựa trên Ubuntu 12.04 LTS với Kernel 3.2.0-23), vì vậy đây là điều xa vời. Và như tôi đã viết, tôi cũng đã thử các tệp đó trên máy ảo Windows 7. Nhưng tất nhiên tôi không biết người tạo ra các tệp zip đã sử dụng cái gì.
rượu táo

1
Mã hóa này có vẻ như một số loại mã hóa DOS. Thông thường nếu tôi thấy các vấn đề với mã hóa UTF8, các ô tiếng Đức trông giống như ä = ä hoặc Ü = Ãœ
rượu táo

@cider thử find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest Điều này tìm các tệp từ thư mục hiện tại chuyển tiếp và chạy riêng rẽ trên mỗi tệp. Tên tệp được mã hóa thành danh sách nullterminated.
Manwe

Câu trả lời:


2

Lý do bạn nhận được cảnh báo "đã UTF-8" là vì các chuỗi đó thực sự đã có trong UTF-8. Ký tự "ü" được mã hóa theo kiểu OSX dưới dạng 'u' theo sau là hai byte "\ xCC" và "\ x88". Hai byte này kết hợp với nhau tạo thành đại diện UTF-8 của \ u0308, kết hợp sơ đồ.

Nếu bạn xem danh sách trang 437 liệt kê ở đây , bạn sẽ thấy ký tự \ xCC là "" và ký tự \ x88 là "ê".

Dù bạn đang sử dụng để hiển thị các chuỗi ký tự đó thì không phải là diễn giải chúng dưới dạng UTF-8 mà là CP437.

Một bằng chứng nhanh, nếu bạn đọc ruby, sẽ hiển thị như mong đợi trong thiết bị đầu cuối UTF-8 của tôi:

$ ruby -e 'puts "u\xCC\x88"' | iconv -f cp437 -t utf-8
ü
$ ruby -e 'puts "u\xCC\x88"'
ü

0

Tôi đoán là hệ thống tập tin mà bạn đang cố gắng giải nén hoặc thao tác với các tập tin. FAT32 sẽ không thích ô dù của bạn. Hãy thử sao chép các tệp này khỏi ổ đĩa flash (hoặc những gì có bạn) và sau đó giải nén tệp zip để xem loại tên tệp mà tên tệp tạo ra.

Cả NTFS (Windows) và Ext4 (Mint) đều không gặp vấn đề với mã hóa tên.

Bản thân tên mã hóa của các tệp zip trên hệ thống FAT32 rất có thể sẽ không thay đổi hoặc được sửa khi bạn sao chép chúng vào một hệ thống tệp hỗ trợ thích hợp, nhưng các thư mục con khi giải nén sẽ ổn.


0

Đầu tiên lưu ý rằng mã hóa ký tự là phần địa ngục riêng của nó. Trong thế giới Windows vẫn tồn tại một sự đối ngẫu khó chịu giữa UTF-8 và M $ chơi ngu ngốc trong một thời gian dài và khăng khăng đòi ISO-8859 (đoán xem ai đã nghĩ ra nó). Như đã đề cập ở trên, nó gần như chắc chắn có liên quan đến hệ thống tập tin. Giải pháp của tôi không phải là một kỹ thuật, mà là một giải pháp đã làm việc cho tôi trong nhiều năm nay:

Lời khuyên cá nhân của tôi cho tên tệp luôn giống nhau: Chỉ cần gắn với chữ và số cộng với dấu gạch ngang (-) và dấu gạch dưới (_). Viết umlaute như ae, ue và oe. Đừng sử dụng khoảng trắng và các ký tự đặc biệt khác. Nó có một chút bất tiện lúc đầu, nhưng nó sẽ giúp bạn tiết kiệm rất nhiều nỗi đau ở những nơi không ngờ tới.

Như một lưu ý phụ: có, đây là một loại "hack" khó chịu nhưng nếu bạn làm việc đa nền tảng, bạn thường phải quay lại mẫu số chung cuối cùng. Bạn sẽ chấp nhận rằng một cái gì đó cơ bản như mã hóa ký tự sẽ là một tiêu chuẩn cứng, nhưng hóa ra các tiêu chuẩn là một điều khó có được. XKCD này tóm tắt nó khá độc đáo


Tôi phát ốm và mệt mỏi với các vấn đề mã hóa trong tên tệp khi tôi thử (và không thành công) để đồng bộ hóa các tệp giữa Mac, Windows và Linux (thông qua Syncthing). Tôi sẽ điều chỉnh lời khuyên của bạn, tuy nhiên trong tiếng Thổ Nhĩ Kỳ có ç, ş, ı, ğ, ü, ö, không thuận tiện để viết bằng chữ và số. Tôi muốn không sử dụng lưu trữ đám mây nhưng vấn đề này buộc tôi phải làm như vậy.
Tèo
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.