我有许多HTML文档,其中包含许多Unicode代码点表示的HTML实体,例如بروح
是否有一个很好的工具可以将多个HTML文档中的HTML实体转换为纯UTF-8 / UTF-16 / UTF-32字符?
我想要一个可以为此目的执行批处理作业的离线转换工具。
答案 0 :(得分:4)
我不知道这样的工具,但你可以很容易地写一个。例如,这个C#代码将转换当前文件夹中的所有html文件:
foreach (string name in Directory.GetFiles(".", "*.html")) {
string s = File.ReadAllText(name);
s = Regex.Replace(
s,
@"&#(\d+);",
m => ((char)Int32.Parse(m.Groups[1].Value)).ToString()
);
File.WriteAllText(name, s);
}
答案 1 :(得分:1)
GNU实用程序“recode”将使用调用
执行此操作重新编码HTML..UTF-16LE< old.html> new.html
(当然还是UTF-16BE。)
http://ftp.gnu.org/gnu/recode/recode-3.6.tar.gz
它使用HTML作为字符集有点像hack并被视为ASCII或LATIN-1,当它被视为任何字符集的“表面”时。如果有任何UTF-8字符,它可能会中断,所以我现在撤回我的建议。使用第一个。
(您可能希望recode UTF-8..HTML,HTML..UTF-16LE
能够正常工作,但这首先会对&符号进行编码......)