如何有效地将 utf-8-mac 转换为 utf
How to effectiv convert utf-8-mac to utf
我必须定期将包含 uft-8-mac 字符串的文件转换为 uft-8。我开始用 iconv 来完成这项工作。
如果必须转换的行太多,iconv 如何抛出错误。
这是重现错误的脚本
#!/bin/zsh
set -eu
for i in {1..1000}; do
echo "$i:äöüß@€" >> /tmp/xx
iconv -f utf-8-mac -t utf-8 /tmp/xx > /dev/null
done
显然我可以拆分文件,但我得到了很多文件。
有人有其他解决方法或工具吗?或者 golang 中的代码示例?
我试过了
func main() {
dat, err := os.ReadFile(".backup_files.unconv")
if err != nil {
log.Fatal(err)
}
output := ".backup_files.goconv"
w, err := os.Create(output)
if err != nil {
log.Fatalf("Can't create %s, %v", output, err)
}
defer closeFile(w)
wc := norm.NFC.Writer(w)
defer wc.Close()
wc.Write(dat)
}
但它与iconv 结果不同。
提前致谢。
找到合适的解决方案:
你可以使用uconv
utility from ICU. Normalization是通过音译实现的(-x
).
在 Debian、Ubuntu 和其他衍生产品上,uconv
在 libicu-dev
包中。在 Fedora、Red Hat 和其他衍生产品以及 BSD 端口中,它位于 icu
包中。
我必须定期将包含 uft-8-mac 字符串的文件转换为 uft-8。我开始用 iconv 来完成这项工作。 如果必须转换的行太多,iconv 如何抛出错误。 这是重现错误的脚本
#!/bin/zsh
set -eu
for i in {1..1000}; do
echo "$i:äöüß@€" >> /tmp/xx
iconv -f utf-8-mac -t utf-8 /tmp/xx > /dev/null
done
显然我可以拆分文件,但我得到了很多文件。
有人有其他解决方法或工具吗?或者 golang 中的代码示例?
我试过了
func main() {
dat, err := os.ReadFile(".backup_files.unconv")
if err != nil {
log.Fatal(err)
}
output := ".backup_files.goconv"
w, err := os.Create(output)
if err != nil {
log.Fatalf("Can't create %s, %v", output, err)
}
defer closeFile(w)
wc := norm.NFC.Writer(w)
defer wc.Close()
wc.Write(dat)
}
但它与iconv 结果不同。 提前致谢。
找到合适的解决方案:
你可以使用uconv
utility from ICU. Normalization是通过音译实现的(-x
).
在 Debian、Ubuntu 和其他衍生产品上,uconv
在 libicu-dev
包中。在 Fedora、Red Hat 和其他衍生产品以及 BSD 端口中,它位于 icu
包中。