gpt4 book ai didi

linux - 如何将非 UTF-8 格式的 xml 文件转换为符合 UTF-8 格式的 xml

转载 作者:IT王子 更新时间:2023-10-29 00:32:09 26 4
gpt4 key购买 nike

我有一个巨大的 xml 文件,其示例数据如下:

 <vendor name="aglaia"><br>
<vendorOUI oui="000B91" description="Aglaia Gesellschaft für Bildverarbeitung ud Kommunikation m" /><br>
</vendor><br>
<vendor name="ag"><br>
<vendorOUI oui="0024A9" description="Ag Leader Technology" /><br>
</vendor><br>

因为它可以看到有文本“Gesellschaft für Bildverarbeitung”不符合 UTF-8,因为我从 xml 验证器收到错误,错误如下:

Import failed:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.

所以问题是如何在 Linux 环境中将 xml 文件转换为 UTF-8 兼容格式?或者在 bash 中有没有一种方法可以在首先创建 xml 时确保所有变量/字符串都以符合 UTF-8 的格式存储?

最佳答案

使用字符集转换工具:

iconv -f ISO-8859-1 -t UTF-8 filename.txt

参见 gnu-page

...并在文件 http://standards.ieee.org/develop/regauth/oui/oui.txt 中“aglia”(如上例所示)报告为:

00-0B-91   (hex)            Aglaia Gesellschaft für Bildverarbeitung und Kommunikation m
000B91 (base 16) Aglaia Gesellschaft für Bildverarbeitung und Kommunikation m
Tiniusstr. 12-15
Berlin D-13089
GERMANY

似乎“ü”是被损坏的字符。

更新

当使用 wget 下载“oui.txt”时,我在文件中看到字符“ü”。如果您没有,那么您的下载内容就会损坏。考虑使用其中之一:

  • wget --header='Accept-Charset: utf-8'
  • 尝试使用 curl -o oui.txt 代替

如果以上方法均无效,只需在您喜欢的浏览器中打开链接并“另存为”。在这种情况下,注释下面脚本中的 wget 行。

我成功使用了以下脚本(更新 BEGIN 和 END 以获得有效的 XML 文件)

#!/bin/bash

wget http://standards.ieee.org/develop/regauth/oui/oui.txt
iconv -f iso-8859-15 -t utf-8 oui.txt > converted

awk 'BEGIN {
print "HTML-header"
}

/base 16/ {
printf("<vendor name=\"%s\">\n", $4)
read
desc = substr($0, index($0, $4))
printf("<vendorOUI oui=\"%s\" description=\"%s\"/>\n", $1, desc)
}
END {
print "HTML-footer"
}
' converted

希望这对您有所帮助!

关于linux - 如何将非 UTF-8 格式的 xml 文件转换为符合 UTF-8 格式的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336634/

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