2016-04-25 39 views
2

考慮文字的下面的示例行:的iconv - 音譯如果可能的話,否則保留未轉換

α Arietis, called Hamal, is the brightest star in Aries. Its traditional name is derived from the Arabic word for 「lamb」 or 「head of the ram」 (ras al-hamal).

它有三種不同的UTF-8字符的α,左智能引號,和一個正確的智能報價。

我的目標是儘可能多的音譯從UTF-8到常規ASCII,但留下任何不可轉換的字符原樣。 (在上面的示例文本,智能引號可以音譯到",但α不能)

我現在的命令是:

iconv -f UTF-8 -t ASCII//TRANSLIT < iconv.sample 

然而,它未能在α轉換,並與iconv: (stdin):1:0: cannot convert終止。
如果我添加//IGNORE到目標或使用-c選項,則丟棄該α乾脆。

我怎麼能音譯如果可能的話,但如果沒有退回到原來的輸入字符?

回答

2

我不知道它使用iconv時,作爲輸出編碼將必須符合(即,如果指定ASCII,它一定會吐出ASCII,無論什麼)是可能的。

如果你有uconv可用,您可以遠離輸出編碼指定音譯操作:

uconv -f "UTF-8" -t "UTF-8" -x "Latin-ASCII" 

舉個例子:

$ echo "α Arietis 「head of the ram」" | uconv -f "UTF-8" -t "UTF-8" -x "Latin-ASCII" 
α Arietis "head of the ram" 
+0

這正是我要找的!我不知道,甚至是一種效用。 –

+0

我有點遲了,重新審視了這一點,但似乎'Latin-ASCII'有一個將重音字符轉換爲無重音ASCII的壞習慣。正確的音譯似乎是'-x':: [[:標點符號:] [:符號:]] Latin-ASCII;''。這僅適用了'拉丁ASCII'轉化爲標點和符號。 –

相關問題