2016-04-22 40 views
2

我有一個包含大約60 000推文,大多是法語的Twitter存檔。 在這些中,重音字符使用U轉義的十六進制表示。例如,「animée」一詞被表示爲「anim \ u00E9e」。 現在,我想將其轉換爲UTF-8。好消息是,有一個名爲ascii2uni的unix實用程序。轉換twitter檔案unicode轉義

壞消息是,顯然任何可以解釋爲十六進制數字的東西都將被解釋爲這樣。因此,而不是「animée」,我結束了這個廢話:「animພ」

那麼我怎樣才能將這些鳴叫轉換爲UTF-8的方式不會像這樣破壞?

回答

1

ascii2uni程序的默認格式無法正常工作。但幸運的是,您可以定義自己的自定義格式。

echo 'aim\u00E9e \uD852\uDF62 bbb' | ascii2uni -Z '\u%04X' 

漢字取自https://en.wikipedia.org/wiki/UTF-16#Examples

+0

我嘗試了你的第一個解決方案,並從iconv中收到錯誤消息「不支持從Java轉換」。 第二個解決方案似乎工作。我會嘗試一下,看看是否有任何錯誤。 – Typhon

+0

它似乎在工作。我試圖用一個類似的假設使用正則表達式,但我無法使它工作,謝謝。 – Typhon

+0

我還是得到一堆這樣的錯誤: Unicode代理U + D83D在UTF-8非法UTF-8在-e行5,<>行72863. Unicode代理U + DC80在UTF-8在-e時是非法的第5行,<> 72863行。 我認爲他們是由於漢字或表情符號。 – Typhon