2014-02-14 3 views
3

Содержание ввода является кусок HTML, скопированный из окна WebKit, какPerl, редактирование на месте портит кодировку текста

enter image description here

Это правильно отображается в WebKit с помощью UTF-8.

То, что я хочу сделать, это заменить все теги, я использую этот один вкладыш:

perl -i -pe "s/<img.+?>//g" 

вход является RichText я скопировал в мой буфер обмена и перенаправляется в этот однострочника другой программой , наверное, это что-то вроде:

echo "rich html text" | perl -i -pe "s/<img.+?>//g" 

Ну, это удалить <img> теги, но все символы Unicode испорчены после подстановки.

enter image description here

Я на Windows 7, языковой стандарт En - США. Кодовая страница cmd уже установлена ​​в UTF-8. Это не работает, даже если я передаю опцию -C.

Есть ли способ сохранить код как однострочный, заставляя его работать для ввода Unicode?

+0

http://stackoverflow.com/q/627661/725418 – TLP

+0

Вместо perl вывести на stdout или файл, чтобы убедиться, что это не ваша первая программа, которая сначала помещает контент. –

ответ

0

Вы можете попробовать вставить это в Perl один лайнер:

use open ":encoding(utf8)"; 

Вы можете, вероятно, добавить его через -М:

perl -Mopen=:encoding(utf8) -i -pe "s/<img.+?>//g" 

(Спасибо @TLP за напоминание мне о синтаксисе) ,

Смотрите также the open pragma

+0

Синтаксис переключения для этой строки будет: -Mopen =: encoding (utf8) ' – TLP

+0

Я забыл упомянуть, что вход не является файлом, это текст, который я скопировал в свой буфер обмена и подключил его к этой однострочной линии другой программой , Я пробовал использовать этот perl -i -pe open: encoding (utf8) '; s/ // g "', он даже не выполняет замену, я не знаю, где это неправильно. :( – Sawyer

+0

@Sawyer попробуйте с -M, как в моем обновленном ответе – harmic

0

perl -COE -i -pe "s/<img.+?>//g" input должен работать, опция -COE включается Юникода как на STDIN и STDOUT.

Для получения более подробной информации см. perldoc perlrun.

+0

Это не работает, я пробовал все опции -C. Не имеет отличий – Sawyer

+0

даже -CD? Я понял, что вы не работали над STDIN/STDOUT, а скорее в файле. – mirod

Смежные вопросы