2014-02-14 31 views
3

輸入的內容是HTML從webkit的窗口複製的塊,像Perl的就地編輯弄亂文本編碼

enter image description here

它使用UTF-8正確地顯示在webkit的。

我想要做的是,以取代所有的標籤,我用這一個班輪:

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

輸入是我複製到我的剪貼板,然後由另一程序重定向到這一個班輪的富文本,大概是這樣的:

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,輸出到標準輸出或文件,以確保這不是你的第一個程序,它首先混淆了內容。 –

回答

0

你可以嘗試在你的Perl將這個內膽:

use open ":encoding(utf8)"; 

你可以很可能是通過-M添加:

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選項打開unicode的兩個標準輸入和標準輸出。

有關更多詳細信息,請參見perldoc perlrun

+0

它不工作,我試過所有-C選項。沒有區別。 – Sawyer

+0

甚至-CD?我意識到你沒有在STDIN/STDOUT,而是放在一個文件上。 – mirod