【问题标题】:Convert UTF-8 character sequence to real UTF-8 bytes将 UTF-8 字符序列转换为真正的 UTF-8 字节
【发布时间】:2012-09-22 00:43:45
【问题描述】:

我有一个纯文本文件 (.yml),其中包含这样的 UTF-8 字符序列:

foo: "检测 \xC3\xB8 "

问题在于 \xC3\xB8 - 这些不是“真正的”UTF-8 字节,因为它们在文本文件中保存为 8 个实际字符:\ x C 3 \ x B 8

有没有办法将这些转换成真正的 2 字节 UTF-8 序列?

任何操作系统/语言/外壳工具都可以使用:-)

/卡斯滕

【问题讨论】:

  • 只有这个“序列”吗?
  • 不,这只是一个例子。有来自许多不同语言的各种非 ASCII 字符。所以一个简单的正则表达式替换是不可能的。
  • 文本是否可以包含“意图”(作者真正输入的)这样的转义序列?
  • 我认为这只是一些 UTF-8 文件在非 utf8 编辑器中打开并保存为 ISO-8859-1 的情况。或类似的东西。一团糟

标签: encoding utf-8 iconv


【解决方案1】:

使用这个 perl 脚本来转换你的文件:

#!/usr/bin/perl
while (<STDIN>) {
  $_ =~ s/\\x([0-9A-F][0-9A-F])/chr(hex($1))/eg;
  print $_;
}

假设您将一个文件命名为bogusutf,然后使用以下命令进行转换:

$ perl bogusutf 输出文件

【讨论】:

  • 这是 Perl 真正闪耀的地方。
  • 正是我所需要的——我的 Perl 有点生锈了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 2016-04-03
  • 2011-06-25
  • 1970-01-01
相关资源
最近更新 更多