4

以前はエンコードを変換して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たが、うまくいきませんでした Google 翻訳 + stackoverflow エディタの両方がそれを検出して変換できましたか?

別の例: このウェブサイトhttp://kanjidict.stc.cx/recode.phpは、Assume HTML (default: handle as plain text)

私が欠けているものと、これらの3つのWebサイトは、正しく変換するためにそれを行っていました????

4

4 に答える 4

6

良い 、

1日働いた後、失われたコマンドを見つけました。これは、インストールしたパッケージと呼ばれるものですascii2uni

単純に:sudo apt-get install ascii2uni

いくつかのテストの後、このコマンドを使用して1つのファイルをユニコードに変換できました

ascii2uni -a D source.html > target.html

コマンドラインのみを使用して変換できました

乾杯

于 2011-01-11T11:48:04.587 に答える
2

アイデアは文字列の置換です。でのコーディングPython3

10進数のみを解析します:

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

16進数と10進数を解析します。

>>> 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ßþ'
于 2011-11-05T15:20:00.820 に答える
1

これらの番号は文字コードと呼ばれます。使用している言語に応じて、それらを処理するurlおよびhtml処理に関連する特別な関数があります。


PHPには、http://www.php.net/manual/en/function.htmlspecialchars-decode.phpがあります 。他の言語でも同様の関数である必要があります

于 2011-01-10T12:25:58.727 に答える
1
recode html..utf8

これも機能するはずですが、再コード化の使用法マニュアルを必ず読んでください。特に指示がない限り、ファイルを所定の位置に再コード化します。

于 2015-09-19T22:49:43.157 に答える