Здравствуйте.
У меня есть файлы, они все в кодировке cp1251, мне нужно пересохранить их в кодировке utf-8. Вручную через редактор не вариант, так как файлов более 1000 шт.
Подскажите пожалуйста какой-нибудь оптимальный способ.
задан 4 июн 2015 в 17:42
4
Не работаю с Windows, но могу предложить решение для любой системы, если у вас установлен интерпретатор Python 3:
import os
from glob import glob
for filename in glob('*.txt'): # задаёте шаблон для файлов
with open(filename, 'r', encoding='cp1251') as in_file:
raw_filename, ext = os.path.splitext(filename)
# добавляем суффикс имени файла, можно добавить папку
new_filename = raw_filename + '-unicode' + ext
with open(new_filename, 'w') as out_file:
# записываем информацию
out_file.write(in_file.read())
ответ дан 4 июн 2015 в 18:12
Timofei BondarevTimofei Bondarev
9,0983 золотых знака39 серебряных знаков54 бронзовых знака
Для файлов в текущем каталоге:
for /r %%a in (*.php) do "перекодировщик %%a"
где «перекодировщик» — выбранный вами перекодировщик с нужными ключами командной строки, в %%a
будет содержаться имя файла.
ответ дан 4 июн 2015 в 18:23
так как автор не указал ни в тексте вопроса, ни с помощью меток, свою операционную систему, а ответ на вопрос может быть интересен и пользователям операционной системы gnu/linux
, приведу ответ и для неё:
$ for f in *.txt; do mv "$f" tmpfile; cat tmpfile | iconv -f cp1251 -t utf8 > "$f"; done; rm tmpfile
для всех файлов, имеющих суффикс .txt
в текущем каталоге, будет произведено перекодирование их содержимого из кодировки cp1251 в кодировку utf8.
ответ дан 4 июн 2015 в 18:41
aleksandr barakinaleksandr barakin
67.5k201 золотой знак74 серебряных знака217 бронзовых знаков
3
Воспользуйтесь утилитой uconv из библиотеки ICU, которая является аналогом iconv и портирована на Виндоуз.
ответ дан 5 июн 2015 в 7:46
CerboCerbo
6,8332 золотых знака22 серебряных знака43 бронзовых знака
Get-Childitem d:*.txt -File | foreach {$a=Get-Item $_ ; $b="d:utf"+$a.Name ; Get-Content $a | Out-File -Encoding UTF8 -FilePath $b}
Powershell, для файлов внутри одной директории. Есть в windows 7 по умолчанию.
Можно добавить -recurse для всех вложенных папок.
Можно читать пути из файла :
Get-Content d:files.txt
ответ дан 14 июн 2015 в 13:56
✍
Работая над проектом интернет магазина столкнулся, с проблемой кодировки в компонентах движка.Проблема была не в оригинальных файлах магазина, которые как и пологается были в кодировке UTF-8, а во врезаемых модулях которые были в кодировке CP-1251, потому что писались к предыдущим версиям CMS где всё было в кодировке Windows-1251. Кроме этого встретил модули и их модификации где была смешанная кодировка: код в Utf-8, а различные сообщения на кириллице в Cp-1251.
В начале пробовал изменять кодировку при помощи редактора Akelpad, но по неизвестной причине это не смогло решить проблему, да и файлов было довольно много подлежащих к изменению.Возникшею проблему удалось решить при помощи простой и удобной программы
EncodingConverter.Разумеется, наткнулся на эту программу совершенно случайно, перекапывая различные форумы, а до этого попадались другие решение только не подходящие под мою задачу.
Моё Описание программы EncodingConverter
Для запуска программы EncodingConverter,
- открываем одноименный файл EncodingConverter. exe.
- В начале через кнопку обзор выбираем папку с файлами
- Затем в выпадающим списке выбираем новую кодировку.
- UTF-8 без BOM
- UTF-8 с BOM
- UTF-16-Le
- UTF-16-BE
- UTF-32-LE
- UTF-32-BE
- CP-1251
- В поле фильтр, нам нужно дописать те расширение файлов, в которых будем изменять кодировку.
- Перед тем как нажать кнопку начала изменения кодировки, нажмите на кнопку анализировать.
(в которых нужно изменить кодировку), при этом в папке могут содержаться файлы с разными расширениями и разным количеством вложенных папок.Флажок обрабатывать вложенные папки оставляем на месте.
В нашем случае это Cp-1251, но можно по желанию выбрать и такие как:
В поле уже имеется ряд масок, поэтому в начало или конец строки дописываем примерно так: *. php|*. html|*. htm и так далее, разделитель масок — это вертикальная черта.
Вот так всё просто в этой программе, спасибо за это автору.Не забывайте все такие фокусы производить всегда на копиях файлов.
Где скачать EncodingConverter
А скачать эту версию программы EncodingConverter, которую я сам использую можно с моего сайта.Скачать EncodingConverterРазмер архива Zip примерно 23 KB.
Поделиться
Если не работает ссылка?
Если вдруг ссылка стала не рабочей, пожалуйста, скопируйте ссылку из адресной строки браузера на эту страницу и отправьте её мне черезФорму обратной связи в теме сообщения выбрав подходящию тему.
Благодарю вас за понимание.
- Печать
Страницы: [1] 2 Все Вниз
Тема: Как пакетно поменять кадировку у файлов (Прочитано 1497 раз)
0 Пользователей и 1 Гость просматривают эту тему.

jimfuny
Как пакетно поменять кадировку у всех php или txt или html файлов cp1251 в utf-8 которые например находятся в папке /Видео/files/upload/
Пробовала так
find ~/Видео/files/upload/* -exec ‘*.php’ -f cp1251 -t utf-8 -r —notest {} ;
Пишет нет такого ‘*.php’ файла
Может программы есть какие для этого
« Последнее редактирование: 17 Июля 2016, 08:56:10 от megallodon »

Azure
Есди мы говорим про php-файлы
find ~/Видео/files/upload/ -name '*.php' -exec iconv --verbose -f CP1251 -o {}.utf8 {} ;
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

krazetanus
megallodon,
специально для этого поставил.

jimfuny
Есди мы говорим про php-файлы
find ~/Видео/files/upload/ -name '*.php' -exec iconv --verbose -f CP1251 -o {}.utf8 {} ;
вроде пошло но вконце выдало сообщение об ошибки, что это значит?
/home/tlod/Видео/files/upload/install.php:
iconv: недопустимая входная последовательность в позиции 431
/home/tlod/Видео/files/upload/admin.php:
/home/tlod/Видео/files/upload/index.php:
/home/tlod/Видео/files/upload/cron.php:
iconv: недопустимая входная последовательность в позиции 432
« Последнее редактирование: 17 Июля 2016, 12:42:25 от megallodon »

Azure
Не распознало какие-то символы. Может не ср1251?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

jimfuny
Не распознало какие-то символы. Может не ср1251?
это dle движок вроде у него ср1251 и еще так windows-1251
если получилось так
/home/tlod/Видео/files/upload/engine/editor/newsletter.php:
/home/tlod/Видео/files/upload/engine/editor/shortnews.php:
/home/tlod/Видео/files/upload/engine/editor/static.php:
/home/tlod/Видео/files/upload/engine/editor/comments.php:
/home/tlod/Видео/files/upload/engine/editor/jscripts/tiny_mce/plugins/emoticons/emotions.php:
/home/tlod/Видео/files/upload/engine/editor/fullnews.php:
/home/tlod/Видео/files/upload/engine/editor/emotions.php:
/home/tlod/Видео/files/upload/engine/init.php:
/home/tlod/Видео/files/upload/engine/download.php:
/home/tlod/Видео/files/upload/engine/engine.php:
/home/tlod/Видео/files/upload/engine/print.php:
/home/tlod/Видео/files/upload/engine/go.php:
/home/tlod/Видео/files/upload/engine/preview.php:
/home/tlod/Видео/files/upload/engine/rss.php:
/home/tlod/Видео/files/upload/install.php:
iconv: недопустимая входная последовательность в позиции 431
/home/tlod/Видео/files/upload/admin.php:
/home/tlod/Видео/files/upload/index.php:
/home/tlod/Видео/files/upload/cron.php:
iconv: недопустимая входная последовательность в позиции 432
значит кодировка изменилась у всех файлов, кроме у этих двух файлов?
/home/tlod/Видео/files/upload/install.php:
iconv: недопустимая входная последовательность в позиции 431
/home/tlod/Видео/files/upload/cron.php:
iconv: недопустимая входная последовательность в позиции 432
или у всех не изменилась кодировка?
попробовала только что так в мсето ср1251 поменяла windows-1251 так
find ~/Видео/files/upload/ -name '*.php' -exec iconv --verbose -f windows-1251 -o {}.utf8 {} ;
то же самое в конце
/home/tlod/Видео/files/upload/install.php:
iconv: недопустимая входная последовательность в позиции 431
/home/tlod/Видео/files/upload/cron.php:
iconv: недопустимая входная последовательность в позиции 432
« Последнее редактирование: 17 Июля 2016, 12:57:57 от Azure »

Azure
Можно добавить -c для игнорирования ошибок.
Ну или все-таки посмотреть на 431/432 символ в указанных файлах.
« Последнее редактирование: 17 Июля 2016, 13:06:58 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

jimfuny
Можно добавить -c для игнорирования ошибок.
Ну или все-таки посмотреть на 431/432 символ в указанных файлах.
в файле /home/tlod/Видео/files/upload/install.php: строка 431 там </div> и все, но дело не в этом
только что глянула в папку так получается команда не саму кодировку у файлов а создала дубли файлов но только в каждой копии имени файла в конце добавила utf8 и теперь если например был файл с таким названием index.php и теперь у него ессть копия такого же файла но в конце utf8 получается так index.php.utf8 по всей видимости потому ваша команда не срабатывала
залила новые файлы в папку вывод ошибок больше нет но все таки эта команда что вы порекомендовали создает дубли файлов и меняет имена дублей файлов то есть в концу имени файла ставит utf8
вы случайно не знаете где дамп бд sql файл находится у дле в установочном архиве?
« Последнее редактирование: 17 Июля 2016, 15:38:59 от megallodon »

ReNzRv
megallodon,
что-бы без дубликатов, можно так:
find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) -exec sh -c 'iconv -f CP1251 "$0" > .tmp_file; if [ $? = 0 ]; then cat .tmp_file | tr -d "r" > "$0"; echo "Обработан файл: $0"; else echo "Пропускается файл: $0"; fi' "{}" ;
посмотреть кодировки:
find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) -exec file "{}" ; | sed -r 's/^(.*): *(.*)$/2t1/' | sort

Azure
создает дубли файлов и меняет имена дублей файлов то есть в концу имени файла ставит utf8
Так сделано специально. Если всё нормально, то достаточно просто заменить новыми файлами исходные
find ~/Видео/files/upload/ -name '*.php.utf8' -exec rename -f 's/.utf8$//' {} +
строка 431 там
Смотреть надо символ (не строку)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

jimfuny
megallodon,
что-бы без дубликатов, можно так:find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) -exec sh -c 'iconv -f CP1251 "$0" > .tmp_file; if [ $? = 0 ]; then cat .tmp_file | tr -d "r" > "$0"; echo "Обработан файл: $0"; else echo "Пропускается файл: $0"; fi' "{}" ;
посмотреть кодировки:find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) -exec file "{}" ; | sed -r 's/^(.*): *(.*)$/2t1/' | sort
видно в консоли строки бегут будто идет перекадировка но когда проверяешь файлы то кадировка остается та же, но дубли уже не создает
да уж поенмять кодировку у файлов оказалось не простая задача
писали в одном форуме штирлиц есть такая программа дл windows но wine не хочется что то ставить, ведь через нее есть вероятность могут сломать ubuntu и все
именно папку templates у файлов не меняет кодировку, даже попробовала вариант тот где создает дубли файлов именно в папку templates она будто не видит, все остальные меняет а эту папку нет, честно по всякому попробовала не получилось, если кому интересно могу сбросить файлы если кому будет интересно самому посмотреть
« Последнее редактирование: 17 Июля 2016, 19:47:49 от megallodon »

ReNzRv
megallodon,
папка ~/templates ? пеменяй или переименуй папку, и повтори.
После кодировка какая (вывод команды)?
Если нет, покажи вывод:
find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) | wc -l
но когда проверяешь файлы то кадировка остается та же
проверяешь моей командой? «та же» это какая? находясь в той же директории, в которой была выполнена команда для перекодировки?
да уж поенмять кодировку у файлов оказалось не простая задача
команда проверена и работает. ты посто элементарно что-то делаеш не то.
« Последнее редактирование: 17 Июля 2016, 20:19:36 от renzrv »

jimfuny
megallodon,
папка ~/templates ? пеменяй или переименуй папку, и повтори.
После кодировка какая (вывод команды)?
Если нет, покажи вывод:find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) | wc -l
но когда проверяешь файлы то кадировка остается та же
проверяешь моей командой? «та же» это какая? находясь в той же директории, в которой была выполнена команда для перекодировки?
да проверяю той командой что вы в первый раз дали да и папку templates переименовала в papka
вот что получилось с этой командой
find ~/Видео/files/upload/ -name ‘*.php’ -exec iconv —verbose -f windows-1251 -o {}.utf8 {} ;
tlod@tlod-inspiron-3521:~$ find ~/Видео/files/upload/ -name '*.php' -exec iconv --verbose -f windows-1251 -o {}.utf8 {} ;
/home/tlod/Видео/files/upload/engine/ajax/typograf.php:
/home/tlod/Видео/files/upload/engine/ajax/calendar.php:
/home/tlod/Видео/files/upload/engine/ajax/ratingcomments.php:
/home/tlod/Видео/files/upload/engine/ajax/replycomments.php:
/home/tlod/Видео/files/upload/engine/ajax/newsletter.php:
/home/tlod/Видео/files/upload/engine/ajax/profile.php:
/home/tlod/Видео/files/upload/engine/ajax/quote.php:
/home/tlod/Видео/files/upload/engine/ajax/deletecomments.php:
/home/tlod/Видео/files/upload/engine/ajax/search.php:
/home/tlod/Видео/files/upload/engine/ajax/vote.php:
/home/tlod/Видео/files/upload/engine/ajax/pm.php:
/home/tlod/Видео/files/upload/engine/ajax/poll.php:
/home/tlod/Видео/files/upload/engine/ajax/complaint.php:
/home/tlod/Видео/files/upload/engine/ajax/rebuild.php:
/home/tlod/Видео/files/upload/engine/ajax/clean.php:
/home/tlod/Видео/files/upload/engine/ajax/favorites.php:
/home/tlod/Видео/files/upload/engine/ajax/updates.php:
/home/tlod/Видео/files/upload/engine/ajax/templates.php:
/home/tlod/Видео/files/upload/engine/ajax/find_tags.php:
/home/tlod/Видео/files/upload/engine/ajax/allvotes.php:
/home/tlod/Видео/files/upload/engine/ajax/editnews.php:
/home/tlod/Видео/files/upload/engine/ajax/upload.php:
/home/tlod/Видео/files/upload/engine/ajax/bbcode.php:
/home/tlod/Видео/files/upload/engine/ajax/comments.php:
/home/tlod/Видео/files/upload/engine/ajax/keywords.php:
/home/tlod/Видео/files/upload/engine/ajax/editcomments.php:
/home/tlod/Видео/files/upload/engine/ajax/registration.php:
/home/tlod/Видео/files/upload/engine/ajax/rss.php:
/home/tlod/Видео/files/upload/engine/ajax/adminfunction.php:
/home/tlod/Видео/files/upload/engine/ajax/sitemap.php:
/home/tlod/Видео/files/upload/engine/ajax/feedback.php:
/home/tlod/Видео/files/upload/engine/ajax/addcomments.php:
/home/tlod/Видео/files/upload/engine/ajax/antivirus.php:
/home/tlod/Видео/files/upload/engine/ajax/message.php:
/home/tlod/Видео/files/upload/engine/ajax/rating.php:
/home/tlod/Видео/files/upload/engine/ajax/find_relates.php:
/home/tlod/Видео/files/upload/engine/classes/min/index.php:
/home/tlod/Видео/files/upload/engine/classes/min/groupsConfig.php:
/home/tlod/Видео/files/upload/engine/classes/min/config.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/CSSmin.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/DooDigestAuth.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/FirePHP.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Build.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Loader.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Controller/Files.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Controller/Version1.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Controller/MinApp.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Controller/Page.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Controller/Groups.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Controller/Base.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/CSSmin.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Packer.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/CommentPreserver.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Logger.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/JS/ClosureCompiler.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/ClosureCompiler.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Lines.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Cache/XCache.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Cache/ZendPlatform.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Cache/File.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Cache/Memcache.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Cache/WinCache.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Cache/APC.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/CSS.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/Source.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/YUICompressor.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/CSS/Compressor.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/CSS/UriRewriter.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/HTML.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/DebugDetector.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/YUI/CssCompressor.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/ImportProcessor.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify/HTML/Helper.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/JSMinPlus.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/MrClay/Cli/Arg.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/MrClay/Cli.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/JSMin.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/HTTP/ConditionalGet.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/HTTP/Encoder.php:
/home/tlod/Видео/files/upload/engine/classes/min/lib/Minify.php:
/home/tlod/Видео/files/upload/engine/classes/social.class.php:
/home/tlod/Видео/files/upload/engine/classes/antivirus.class.php:
/home/tlod/Видео/files/upload/engine/classes/typograf.class.php:
/home/tlod/Видео/files/upload/engine/classes/parse.class.php:
/home/tlod/Видео/files/upload/engine/classes/thumb.class.php:
/home/tlod/Видео/files/upload/engine/classes/stopspam.class.php:
/home/tlod/Видео/files/upload/engine/classes/mysql.php:
/home/tlod/Видео/files/upload/engine/classes/templates.class.php:
/home/tlod/Видео/files/upload/engine/classes/mobiledetect.class.php:
/home/tlod/Видео/files/upload/engine/classes/mail.class.php:
/home/tlod/Видео/files/upload/engine/classes/recaptcha.php:
/home/tlod/Видео/files/upload/engine/classes/comments.class.php:
/home/tlod/Видео/files/upload/engine/classes/download.class.php:
/home/tlod/Видео/files/upload/engine/classes/google.class.php:
/home/tlod/Видео/files/upload/engine/classes/mail/class.phpmailer.php:
/home/tlod/Видео/files/upload/engine/classes/uploads/upload.class.php:
/home/tlod/Видео/files/upload/engine/classes/rss.class.php:
/home/tlod/Видео/files/upload/engine/modules/lostpassword.php:
/home/tlod/Видео/files/upload/engine/modules/calendar.php:
/home/tlod/Видео/files/upload/engine/modules/banned.php:
/home/tlod/Видео/files/upload/engine/modules/addnews.php:
/home/tlod/Видео/files/upload/engine/modules/antibot/antibot.php:
/home/tlod/Видео/files/upload/engine/modules/functions.php:
/home/tlod/Видео/files/upload/engine/modules/banners.php:
/home/tlod/Видео/files/upload/engine/modules/lastcomments.php:
/home/tlod/Видео/files/upload/engine/modules/sitelogin.php:
/home/tlod/Видео/files/upload/engine/modules/topnews.php:
/home/tlod/Видео/files/upload/engine/modules/profile.php:
/home/tlod/Видео/files/upload/engine/modules/search.php:
/home/tlod/Видео/files/upload/engine/modules/vote.php:
/home/tlod/Видео/files/upload/engine/modules/stats.php:
/home/tlod/Видео/files/upload/engine/modules/pm.php:
/home/tlod/Видео/files/upload/engine/modules/pm_alert.php:
/home/tlod/Видео/files/upload/engine/modules/poll.php:
/home/tlod/Видео/files/upload/engine/modules/show.short.php:
/home/tlod/Видео/files/upload/engine/modules/links.php:
/home/tlod/Видео/files/upload/engine/modules/rssinform.php:
/home/tlod/Видео/files/upload/engine/modules/show.custom.php:
/home/tlod/Видео/files/upload/engine/modules/static.php:
/home/tlod/Видео/files/upload/engine/modules/favorites.php:
/home/tlod/Видео/files/upload/engine/modules/offline.php:
/home/tlod/Видео/files/upload/engine/modules/main.php:
/home/tlod/Видео/files/upload/engine/modules/bbcode.php:
/home/tlod/Видео/files/upload/engine/modules/tagscloud.php:
/home/tlod/Видео/files/upload/engine/modules/deletenews.php:
/home/tlod/Видео/files/upload/engine/modules/comments.php:
/home/tlod/Видео/files/upload/engine/modules/changemail.php:
/home/tlod/Видео/files/upload/engine/modules/register.php:
/home/tlod/Видео/files/upload/engine/modules/feedback.php:
/home/tlod/Видео/files/upload/engine/modules/cron.php:
/home/tlod/Видео/files/upload/engine/modules/addcomments.php:
/home/tlod/Видео/files/upload/engine/modules/social.php:
/home/tlod/Видео/files/upload/engine/modules/show.full.php:
/home/tlod/Видео/files/upload/engine/skins/default.skin.php:
/home/tlod/Видео/files/upload/engine/opensearch.php:
/home/tlod/Видео/files/upload/engine/api/api.class.php:
/home/tlod/Видео/files/upload/engine/inc/mass_static_actions.php:
/home/tlod/Видео/files/upload/engine/inc/videoconfig.php:
/home/tlod/Видео/files/upload/engine/inc/blockip.php:
/home/tlod/Видео/files/upload/engine/inc/addnews.php:
/home/tlod/Видео/files/upload/engine/inc/banners.php:
/home/tlod/Видео/files/upload/engine/inc/newsletter.php:
/home/tlod/Видео/files/upload/engine/inc/userfields.php:
/home/tlod/Видео/files/upload/engine/inc/googlemap.php:
/home/tlod/Видео/files/upload/engine/inc/editusers.php:
/home/tlod/Видео/files/upload/engine/inc/search.php:
/home/tlod/Видео/files/upload/engine/inc/categories.php:
/home/tlod/Видео/files/upload/engine/inc/xfields.php:
/home/tlod/Видео/files/upload/engine/inc/dumper.php:
/home/tlod/Видео/files/upload/engine/inc/help.php:
/home/tlod/Видео/files/upload/engine/inc/complaint.php:
/home/tlod/Видео/files/upload/engine/inc/rebuild.php:
/home/tlod/Видео/files/upload/engine/inc/links.php:
/home/tlod/Видео/files/upload/engine/inc/clean.php:
/home/tlod/Видео/files/upload/engine/inc/rssinform.php:
/home/tlod/Видео/files/upload/engine/inc/static.php:
/home/tlod/Видео/files/upload/engine/inc/massactions.php:
/home/tlod/Видео/files/upload/engine/inc/mass_user_actions.php:
/home/tlod/Видео/files/upload/engine/inc/templates.php:
/home/tlod/Видео/files/upload/engine/inc/options.php:
/home/tlod/Видео/files/upload/engine/inc/editvote.php:
/home/tlod/Видео/files/upload/engine/inc/main.php:
/home/tlod/Видео/files/upload/engine/inc/check.php:
/home/tlod/Видео/files/upload/engine/inc/editnews.php:
/home/tlod/Видео/files/upload/engine/inc/tagscloud.php:
/home/tlod/Видео/files/upload/engine/inc/question.php:
/home/tlod/Видео/files/upload/engine/inc/comments.php:
/home/tlod/Видео/files/upload/engine/inc/email.php:
/home/tlod/Видео/files/upload/engine/inc/dboption.php:
/home/tlod/Видео/files/upload/engine/inc/usergroup.php:
/home/tlod/Видео/files/upload/engine/inc/preview.php:
/home/tlod/Видео/files/upload/engine/inc/rss.php:
/home/tlod/Видео/files/upload/engine/inc/include/init.php:
/home/tlod/Видео/files/upload/engine/inc/include/functions.inc.php:
/home/tlod/Видео/files/upload/engine/inc/include/inserttag.php:
/home/tlod/Видео/files/upload/engine/inc/wordfilter.php:
/home/tlod/Видео/files/upload/engine/inc/social.php:
/home/tlod/Видео/files/upload/engine/inc/logs.php:
/home/tlod/Видео/files/upload/engine/inc/cmoderation.php:
/home/tlod/Видео/files/upload/engine/inc/iptools.php:
/home/tlod/Видео/files/upload/engine/inc/files.php:
/home/tlod/Видео/files/upload/engine/editor/fullsite.php:
/home/tlod/Видео/files/upload/engine/editor/shortsite.php:
/home/tlod/Видео/files/upload/engine/editor/newsletter.php:
/home/tlod/Видео/files/upload/engine/editor/shortnews.php:
/home/tlod/Видео/files/upload/engine/editor/static.php:
/home/tlod/Видео/files/upload/engine/editor/comments.php:
/home/tlod/Видео/files/upload/engine/editor/jscripts/tiny_mce/plugins/emoticons/emotions.php:
/home/tlod/Видео/files/upload/engine/editor/fullnews.php:
/home/tlod/Видео/files/upload/engine/editor/emotions.php:
/home/tlod/Видео/files/upload/engine/init.php:
/home/tlod/Видео/files/upload/engine/download.php:
/home/tlod/Видео/files/upload/engine/engine.php:
/home/tlod/Видео/files/upload/engine/print.php:
/home/tlod/Видео/files/upload/engine/go.php:
/home/tlod/Видео/files/upload/engine/preview.php:
/home/tlod/Видео/files/upload/engine/rss.php:
/home/tlod/Видео/files/upload/install.php:
/home/tlod/Видео/files/upload/admin.php:
/home/tlod/Видео/files/upload/index.php:
/home/tlod/Видео/files/upload/cron.php:
тепрь вот что получилось через эту команду которую только что порекомендовали
find -type f ( -iname «*.php» -o -iname «*.txt» -o -iname «*.html» ) | wc -l
tlod@tlod-inspiron-3521:~/Видео/files/upload$ find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) | wc -l
205
tlod@tlod-inspiron-3521:~/Видео/files/upload$
« Последнее редактирование: 17 Июля 2016, 20:29:50 от megallodon »

ReNzRv
если теперь перекодировать командой моей, кодировки становятся не UTF-8 ?
Возможно проблема в отсутствии прав на запись файлов.
еще покажи:
find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) ! -writable | wc -l
find -type d ! -writable | wc -l
sh -c 'echo "$0" > .tmp_file; cat .tmp_file' "123 test"
stat "$PWD"
Пользователь добавил сообщение 17 Июля 2016, 21:32:29:
вариант 2 (скопируй и вставляй в терминал как есть):
IFS=$'n'; for F in $(find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ));
do iconv -f CP1251 "$F" > .tmp_file;
if [ $? = 0 ]; then cat .tmp_file | tr -d "r" > "$F";
echo "Обработан файл: $F";
else echo "Пропускается файл: $F"; fi;
done
« Последнее редактирование: 17 Июля 2016, 21:39:43 от renzrv »

jimfuny
если теперь перекодировать командой моей, кодировки становятся не UTF-8 ?
еще покажи:find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) ! -writable | wc -l
find -type d ! -writable | wc -l
sh -c 'echo "$0" > .tmp_file; cat .tmp_file' "123 test"
stat "$PWD"
с помощью этой команды
find -type f ( -iname «*.php» -o -iname «*.txt» -o -iname «*.html» ) ! -writable | wc -l
вышло так
tlod@tlod-inspiron-3521:~/Видео/files/upload$ find -type f ( -iname "*.php" -o -iname "*.txt" -o -iname "*.html" ) ! -writable | wc -l
0
tlod@tlod-inspiron-3521:~/Видео/files/upload$
с помощью этой команды
find -type d ! -writable | wc -l
tlod@tlod-inspiron-3521:~/Видео/files/upload$ find -type d ! -writable | wc -l0
с помощью так команды
find -type d ! -writable | wc -l
tlod@tlod-inspiron-3521:~/Видео/files/upload$ find -type d ! -writable | wc -l0
с этой командой так
tlod@tlod-inspiron-3521:~$ cd ~/Видео/files/upload
tlod@tlod-inspiron-3521:~/Видео/files/upload$ sh -c ‘echo «$0» > .tmp_file; cat .tmp_file’ «123 test»
123 test
а это команда так
stat «$PWD»
tlod@tlod-inspiron-3521:~/Видео/files/upload$ stat «$PWD»
Файл: ‘/home/tlod/Видео/files/upload’
Размер: 4096 Блоков: 8 Блок В/В: 4096 каталог
Устройство: fc01h/64513d Inode: 26218605 Ссылки: 7
Доступ: (0775/drwxrwxr-x) Uid: ( 1000/ tlod) Gid: ( 1000/ tlod)
Доступ: 2016-07-17 21:12:18.804262261 +0300
Модифицирован: 2016-07-17 21:48:46.515150034 +0300
Изменён: 2016-07-17 21:48:46.515150034 +0300
Создан:
- Печать
Страницы: [1] 2 Все Вверх
-
-
January 13 2012, 16:02
- IT
- Cancel
Иногда встает вопрос о перекодировании текстовых файлов из локальной кодировки (Windows-1251, например) в UTF-8.
Ладно бы такой файл один, а даже пусть целых три: открываем Notepad++, меню Кодировки->Преобразовать в UTF-8. Можно преобразовать в UTF-8 без BOM, смотря какие у вас цели.
Если файлов сотни и тысячи, нужно искать пакетный перекодировщих текстовых файлов, желательно бесплатный. И такой перекодировщик есть — UTFCast Express. Скачать его можно с официального сайта: http://www.rotatingscrew.com/downloads.aspx.
Что нам предлагает программа UTFCast Express? Пакетную перекодировку текстовых файлов из форматов ASCII, UTF-16 Little Endian, UTF-16 Big Endian в UTF-8 за пару кликов.
В интерфейсе нет сложных элементов: выбираем директорию, где лежат наши файлы, каталог, куда будут сохраняться перекодированные в UTF-8 файлы. Затем выставляем галочки:
- Recursive — если в указанной директории есть подкаталоги, то обрабатывать файлы любой степени вложенности,
- Copy Unconverted — копировать ли файлы, которые обработчик не смог перекодировать в силу разных обстоятельств (не подходящий тип файла, например, .exe). Опция малополезная, потому что UTFCast не допускает совпадения директории, откуда берутся файлы (Source directory) с директорией назначения (Target directory). Кроме того директория назначения не может быть подкаталогом директории — источника файлов.
- Write BOM — обратите внимание на этот флажок. Если отметить опцию, в начало каждого перекодированного файла будут добавляться дополнительные биты, обозначающие, что файл — UTF-формата. Часто они полезны для программ Windows, а вот в ряде случаев этот флаг нужно убрать категорически. Например, если вы готовите .html и .php файлы к закачке на сервер — оставьте флажок пустым.
- Detect Only — конвертировать не будет, а просто укажет в какой кодировке файлы в директории.
- Exit When Done — выйти по завершении всех операций.
Удачных UTF-8 — преобразований!
Кросс-пост с ishmuradov.ru, комментируйте, пожалуйста, на главном сайте »
Как массово изменить кодировку файлов?
P
На сайте с 22.09.2007
Offline
53
3 ноября 2009, 23:42
10278
Есть 20000 файлов .txt в кодировке UTF-8.
Нужно все перевести в Win-1251.
Подскажите как это сделать.
S2
На сайте с 07.01.2008
Offline
611
Штирлиц — там есть пакетное перекодирование.
P
На сайте с 22.09.2007
Offline
53
Str256:
Штирлиц — там есть пакетное перекодирование.
Как я понял Штирлиц не поддерживает кодировку UTF-8.
Ее нет в списке «начальная кодировка».
S2
На сайте с 07.01.2008
Offline
611
piracy:
Как я понял Штирлиц не поддерживает кодировку UTF-8.
Ее нет в списке «начальная кодировка».
Разве?
[ATTACH]46762[/ATTACH]
P
На сайте с 22.09.2007
Offline
53
Хм, не могу разобраться с программой((
Открываю несколько файлов, выбираю «открыть в окне пакетного редактирования».
Выбираю нужную мне кодировку Windows 1251, нажимаю «Пуск».
И ничего не происходит..
Пробовал выбранным файлам присвоить «начальную кодировку». После этого действия «Пуск» активировался. Но присвоить «начальную кодировку» UTF-8 нельзя. Ее там нет. На всякий случай перепробовал все кодировки. Результат — файлы не переводится в 1251.
Может я что-то не так делаю?
S2
На сайте с 07.01.2008
Offline
611
Не знаю. Возможно вам надо создать соответствующую кодовую страницу. параметры — свойства — кодовая страница.
Попробуйте ещё так: http://www.ljpoisk.ru/archive/653286.html Комменты почитайте. Ща ещё посмотрю.
P
На сайте с 22.09.2007
Offline
53
Str256:
Не знаю. Возможно вам надо создать соответствующую кодовую страницу. параметры — свойства — кодовая страница.
Попробуйте ещё так: http://www.ljpoisk.ru/archive/653286.html Комменты почитайте. Ща ещё посмотрю.
Str256, спасибо за ссылку!
Решил проблему с помощью FAR и плагина FarTrans.
Прогу взял здесь. В сборочке уже идет данный плагин.
Может кому еще пригодится…
На сайте с 27.11.2008
Offline
30
Есть же стандартная unix-команда `iconv’.
Запускается непосредственно на сервере,
скачивать/закачивать ничего не надо,
тем более какие-то проги инсталлировать, плагины:)…
N
На сайте с 16.02.2009
Offline
19
Действительно, зачем проги инсталлить? Установил себе unix, а там iconv есть всегда
На сайте с 27.11.2008
Offline
30
Neval:
Действительно, зачем проги инсталлить? Установил себе unix, а там iconv есть всегда
Устанавливать UNIX на свой комп — это уже совсем другое,
да и мало кому это реально нужно.
Я же говорил о возможности запустить эту команду
на виртуальном хосте (непосредственно на сайте), вот и всё.
P
На сайте с 22.09.2007
Offline
53
Cheltap:
Есть же стандартная unix-команда `iconv’.
Запускается непосредственно на сервере,
скачивать/закачивать ничего не надо,
тем более какие-то проги инсталлировать, плагины…
Буду знать. Спасибо!🍻
Как массово изменить кодировку файлов, переименовать и исправить в них текст
На днях перенёс некоторые сайты на другие сервера. При том, неликвид переместился на сервер под управлением веб-панели Ajenti V. Там, нет apache, а потому файлы .htaccess не работают.
В результате, на одном из статичных многостраничников убилась кодировка и инклюды. Дело в том, что в .htaccess была задана принудительная перекодировка в windows-1251 и все файлы с расширением .html интерпертировались как .php
Давно собирался привести всё это хозяйство в нормальный формат, но всё руки не доходили. Сегодня дошли! Следите за руками.
Внимание. Не пытайтесь это повторить! Всё что идёт ниже может привести к удалению всей информации с сервера, засухе, наводнениям, пуску ядерных ракет класса земля-земля и многим другим бедам. Проконсультируйтесь со специалистом! Если что, я тут не при чём.
Вся операция над 15000 файлов делается всего несколькими командами . Вот они. Захожу в консоль по SSH, захожу в нужную папку и выполняю.
//Меняю метатэг с кодировкой в head'е страницы find -type f -name *.html -exec sed -i -r 's/charset=windows-1251/charset=utf-8/g' {} ; //Меняю текст во всех ссылках с .html на .php find -type f -name *.html -exec sed -i -r 's/.html/.php/g' {} ; //Меняю расширения файлов с .html на .php find -type f -name "*.html" | rename "s/.html$/.php/" //Конвертирую все .php файлы из кодировки cp1251 в utf-8 и сохраняю с расширением .php.net (чтобы сначала проверить всё ли там хорошо) find -type f -name *.php -exec iconv -f cp1251 -t utf-8 -o {}.net {} ; //Переименовываю старые .php файлы в .phpold find -type f -name "*.php" | rename "s/.php$/.phpold/" //Убираю хвост-расширение .net, чтобы осталось .php и провераю всё ли хорошо find -type f -name "*.net" | rename "s/.net$//" //Удаляю старые файлф (.phpold) find -type f -name "*.phpold" -delete
Комментарии (//) привожу для понятности. Пихать их в консоль не стоит.
Команды выполняются рекурсивно. Т.е. не только в той папке, в которую я зашёл, но и в её подпапках. Будьте внимательны!
Порядок команд (если по уму) следовало бы поменять. Как минимум сначала переконвертировать файлы в кодировку utf-8, потом делать в них замену текста. Так, если что-то пойдёт не так, у вас останутся старые файлы и можно будет всё отыграть обратно.
Да и менять расширения из .html в .php тоже лишнее действие. Можно было бы сделать немного иначе и превратить их в .html.net, а дальше работать в этом ключе.
Это детали. Как сделал, так сделал. Главное, что я пытаюсь донести: не надо бездумно копировать команды. Попытайтесь разобраться в том что делаете. Ну или запаситесь резервной копией на случай локального армагедона.
Помогло? Зашли Админу на чай.
А с вами был Доктор Лексиум.
Всё, я побежал пить чай.
Подписывайтесь на RSS и вместо лайков делитесь ссылками на этот пост.