我能做到在vim像這樣:如何在Perl中用Unicode替換Unicode字符?
:%s/\%u2013/-/g
我該怎麼做在Perl相同呢?我認爲這樣做,但它似乎並沒有工作:
perl -i -pe 's/\x{2013}/-/g' my.dat
我能做到在vim像這樣:如何在Perl中用Unicode替換Unicode字符?
:%s/\%u2013/-/g
我該怎麼做在Perl相同呢?我認爲這樣做,但它似乎並沒有工作:
perl -i -pe 's/\x{2013}/-/g' my.dat
對於一個通用的解決方案,Text::Unidecode音譯幾乎所有投入到純US-ASCII中的東西。
所以你的情況這會工作:
perl -C -MText::Unidecode -n -i -e'print unidecode($_)' unicode_text.txt
的-C在那裏,以確保輸入被解讀爲UTF8
它這個轉換:
l'été est arrivé à peine après aôut
¿España es un paìs muy lindo?
some special chars: » « ® ¼ ¶ – – — Ṉ
Some greek letters: β ÷ Θ ¬ the α and ω (or is it Ω?)
hiragana? みせる です
Здравствуйте
السلام عليكم
這個:
l'ete est arrive a peine apres aout
?Espana es un pais muy lindo?
some special chars: >> << (r) 1/4 P - - -- N
Some greek letters: b/Th ! the a and o (or is it O?)
hiragana? miseru desu
Zdravstvuitie
lslm `lykm
最後一個顯示模塊的限制,它不能推斷元音,並從原始的阿拉伯文得到as-salaamu`alaykum。它仍然是相當不錯的,我認爲
嗯,有點強硬。這似乎這樣做(在Mac OS X 10.6.2的Perl 5.10.0):
perl -w -e "
use open ':encoding(utf8)';
use open ':std';
while (<>)
{
s/\x{2013}/-/g;
print;
}
"
我還沒有最小化這一點。請參閱perldoc關於'使用公開'聲明。
從我的(有限)實驗來看,'-p'選項不能識別'use open'指令。 您可以使用「QW()」引用的話:
perl -w -e "
use open qw(:encoding(utf8) :std);
while (<>)
{
s/\x{2013}/-/g;
print;
}
我不知道,如果「-p」不服從「使用公開」是一個錯誤或設計功能。
這並獲得成功對我來說:
perl -C1 -i -pe 's/–/-/g' my.dat
注意,第一條是\ X {} 2013字符本身。
'-C1'的一些解釋會造成奇蹟。這些信息可在http://perldoc.perl.org/perlrun.html獲得(-C1表示'標準輸入是UTF8')。 – 2010-02-22 16:43:12
或者,你可以只指定字符的UTF-8編碼,你想替換:
perl -i -pe 's/\xE2\x80\x93/-/g' my.dat
這裏的十六進制值E28093是十六進制值的UTF-8編碼2013年你可以找到各種工具在線獲取字符的UTF-8編碼,或者您可以在十六進制編輯器中查看my.dat。
是的,知道爲什麼-p不起作用會很有趣。 – stephenmm 2010-02-22 16:21:08