gpt4 book ai didi

python - 更正 XML 编码

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:54 24 4
gpt4 key购买 nike

我有一个编码标记设置为“utf-8”的 xml。但是,它实际上是 iso-8859-1。

以编程方式,我如何在 perl 和 python 中检测到它?以及如何使用不同的编码进行解码?

在 perl 中,我尝试过

$xml = decode('iso-8859-1',$file)

但是,这不起作用。

最佳答案

错误编码是出了名的难以检测,因为随机二进制数据通常代表许多编码中的有效字符串。

在 Perl 中,您可以尝试的最简单的方法是尝试将其解码为 utf-8 并检查是否失败。 (它只能这样工作;一个 utf-8 编码的西方语言文档几乎总是一个有效的 iso-8859-1 文档)

my $xml = eval { decode_utf8( $file, FB_CROAK ) };
if ( $@ ) { is_probably_iso-8859-1_instead }

现在您已经检测到问题,您必须解决它。这很可能取决于您使用的解析器库,但应该适用一些泛型。

如果没有 XML 声明或 MIME 类型,将使用 Perl native 编码,因此您复制的代码应该可以解决问题。

如果有错误的 XML 声明,您可以使用 XML 解码库提供的任何工具覆盖它,或者在移交之前手动替换它。

# assuming it's on line 1:
$contents =~ s/.*/<?xml version="1.0" encoding="ISO-8859-1"?>/;

关于python - 更正 XML 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com