Làm cách nào để quét các ký tự không hợp lệ trên gedit?


7

Tôi đang có một vấn đề nan giải là có nên chỉnh sửa tệp javascript hay không. Khi tôi mở nó bằng gedit, nó sẽ hiển thị cảnh báo sau:

Tệp bạn đã mở có một số ký tự không hợp lệ. Nếu bạn tiếp tục chỉnh sửa tệp này, bạn có thể làm hỏng tài liệu này. Bạn cũng có thể chọn mã hóa ký tự khác và thử lại.

Mã hóa hiện tại là UTF-8. Vì tệp có hơn 100.000 dòng mã, có cách nào nhanh chóng để quét các ký tự không hợp lệ không?


Một cách nhanh chóng và bẩn thỉu là chỉnh sửa tệp (có thể thêm và xóa một cái gì đó sẽ đủ để khiến gedit nghĩ rằng nó đã được thay đổi) và lưu thành tên khác. So sánh tệp gốc và tệp đã thay đổi (diff sẽ giúp ở đây) sẽ cho bạn biết điều gì đang xảy ra.
vonbrand

@vonbrand, cảm ơn lời đề nghị của bạn. Tôi đã thử lưu tệp với tên khác bằng gedit nhưng vặn và ghi đè lên tệp thực tế. Hy vọng những người khác sẽ học hỏi từ sai lầm của tôi bằng cách sao chép tệp trước thay vì sử dụng gedit để lưu: p
Câu hỏi tràn vào

Câu trả lời:


13

Vì tệp là UTF-8 nên bạn có thể chạy isutf8 . Một gói utils bổ sung. Nó cung cấp cho bạn cả dòng, char và offset cho các byte xấu.

Sau đó sử dụng xxd, hexdump hoặc tương tự để phân tích.

Thật không may, nó dừng lại ở vụ tai nạn đầu tiên. Nhưng sau đó một lần nữa nó phụ thuộc vào các tập tin. Có thể chỉ có một byte xấu;)

Có một số mã C thực hiện phân tích tương tự nhưng cho toàn bộ tệp. Nó ở trên một cái đĩa bị lãng quên từ lâu. Có thể cố gắng tìm nó nếu cần.

Có khác, các nhanh chóng và không cách bẩn sẽ được làm một diff giữa một bản sao lưu với gedit - theo đề nghị của mr tốt. @vonbrand .


+1 cho isutf8. Đối với các tệp lớn của tôi, đầu ra từ diff quá khó để giải thích, trong khi isutf8 ngay lập tức cho tôi số dòng và vị trí ký tự của ký tự không phải UTF-8 đầu tiên. Trên Ubuntu 16.04: sudo apt-get install moreutils
Steve Saporta
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.