Tôi vừa bị gỡ xuống sau khi máy chủ của chúng tôi được cập nhật từ Debian 4 sang 5. Chúng tôi đã chuyển sang môi trường UTF-8 và giờ chúng tôi gặp sự cố khi in văn bản chính xác trên trình duyệt, vì tất cả các tệp đều có mã hóa không phải là utf8 như iso-8859-1, ascii, v.v.Thay đổi tệp mã hóa thành utf-8 qua vim trong tập lệnh
Tôi đã thử nhiều tập lệnh khác nhau.
Cái đầu tiên tôi đã thử là "iconv". Đó là một trong những doesnt làm việc, nó thay đổi nội dung, nhưng các tập tin enconding vẫn không phải utf8.
Cùng vấn đề với enca, encamv, convmv và một số công cụ khác tôi đã cài đặt qua apt-get. Sau đó tôi tìm thấy một mã python, sử dụng mô-đun Universal Detector, để phát hiện mã hóa của một tập tin (hoạt động tốt), nhưng sử dụng lớp unicode hoặc lớp codec để lưu nó như là utf-8 không hoạt động, mà không có bất kỳ lỗi nào.
Cách duy nhất tôi tìm thấy để nhận tệp và nội dung của tệp được chuyển thành UTF-8, là vi.
Đây là những bước tôi làm cho một tập tin:
vi filename.php
:set bomb
:set fileencoding=utf-8
:wq
Thats nó. Đó là một trong những công trình hoàn hảo. Nhưng làm thế nào có thể có được điều này chạy thông qua một kịch bản. Tôi muốn viết một kịch bản (Linux shell) mà đi qua một thư mục lấy tất cả các tập tin php, sau đó chuyển đổi chúng bằng cách sử dụng vi với các lệnh trên. Như tôi cần phải bắt đầu ứng dụng vi, tôi không biết làm thế nào để làm điều gì đó như thế này:
"vi --run-command=':set bomb, :set fileencoding=utf-8' filename.php"
Hope ai đó có thể giúp tôi.
Tôi không biết những gì argdo đó có nghĩa là, nhưng tôi đã cố gắng này và nó hoạt động: 'vim + "đặt bom | thiết fileencoding = utf-8 | wq" $ (tìm -type f -name * .php.) ' – NovumCoder
Tốt. argdo chỉ lặp lại lệnh cho mỗi tệp trong danh sách đối số. –