2011-01-10 98 views
3

我曾經通過iconv轉換編碼,但今天我去了一些新的東西給我
我做了一個測試用例作出清楚我的問題:轉換編碼

目標是轉換الحلقة الثالثة其UTF8版本: ا ل ح ل ق ة ا ل ث ا ل ث ة

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> 
<title> this text is from arabic language </title> 
</head> 
<body> 
<p><span> &#1575;&#1604;&#1581;&#1604;&#1602;&#1577; &#1575;&#1604;&#1579;&#1575;&#1604;&#1579;&#1577;</span></p> 
</body> 
</html> 

試圖使用編碼像ASCII , LATIN1 , windows-1252但沒有運氣 我如何告訴這種類型的編碼爲了轉換它? 谷歌翻譯+ stackoverflow編輯器都能夠檢測到它並隱藏它?

又如:本網站http://kanjidict.stc.cx/recode.php能夠編碼正確轉換,如果我檢查Assume HTML (default: handle as plain text)

什麼,我缺少的那些3個網站是這樣做是爲了它正確轉換????

回答

5

好,

後一天的工作,我發現我失去的命令,它的包,我有裝稱爲ascii2uni

只需:sudo apt-get install ascii2uni

和一些測試後,我能夠轉換一個文件,使用此命令

ascii2uni -a D source.html > target.html

爲Unicode和我能夠使用命令行僅

歡呼

1

這些數字被稱爲字母代碼。有一些與url和html處理相關的特殊功能可以處理它們 - 取決於您使用的是哪種語言。


在PHP中,有http://www.php.net/manual/en/function.htmlspecialchars-decode.php在其他語言中應該是類似的功能也

+0

我很抱歉,但我正在尋找像我上面的答案cli命令,感謝您的答案。 – tawfekov 2011-01-11 11:49:32

2

的將其轉換想法是字符串替換。在Python3中進行編碼。

解析只有小數:

>>> import re 
>>> s = r'&#65;&#223;&#254;' 
>>> r = re.compile(r'&#(\d+);') 
>>> r.sub(lambda m:chr(int(m.group(1))), s) 
'Aßþ' 

解析十六進制和十進制:

>>> import re 
>>> s = r'&#x41;&#223;&#xFE;' 
>>> r = re.compile(r'&#(x?)(\w+);') 
>>> r.sub(lambda m:chr(int(m.group(2), 10 if not m.group(1) else 16)), s) 
'Aßþ' 
1
recode html..utf8 

這應該工作過,但請確保你閱讀了重新編碼的使用說明書,如果沒有告知其他情況,它會重新編碼文件。