Encoding 将UTF-8字符序列转换为实际UTF-8字节

Encoding 将UTF-8字符序列转换为实际UTF-8字节,encoding,utf-8,iconv,Encoding,Utf 8,Iconv,我有一个纯文本文件(.yml),其中包含UTF-8字符序列,如下所示: foo:“Dette er en\xC3\xB8” 问题在于\xC3\xB8-这些不是“真实”UTF-8字节,因为它们作为8个实际字符保存在文本文件中:\x C 3\x B 8 有没有办法将这些转换成真正的2字节UTF-8序列 可以使用任何操作系统/语言/Shell工具:-) /Carsten使用此perl脚本转换文件: #!/usr/bin/perl while (<STDIN>) { $_ =~ s/\\

我有一个纯文本文件(.yml),其中包含UTF-8字符序列,如下所示:

foo:“Dette er en\xC3\xB8”

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

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

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


/Carsten使用此perl脚本转换文件:

#!/usr/bin/perl
while (<STDIN>) {
  $_ =~ s/\\x([0-9A-F][0-9A-F])/chr(hex($1))/eg;
  print $_;
}
#/usr/bin/perl
而(){
$\=~s/\\x([0-9A-F][0-9A-F])/chr(十六进制($1))/eg;
打印美元;
}
假设您使用脚本将一个文件命名为
bogusutf
,然后使用以下命令进行转换:

$perl bogusutf输出文件


只有这个“序列”吗?不,这只是一个例子。有许多不同语言的各种非ascii字符。因此,一个简单的regexp替换是不可能的。文本可能包含“意图”(作者真正键入的)这样的转义序列吗?我认为这只是一些UTF-8文件在非utf8编辑器中打开并保存为ISO-8859-1的情况。或者类似的。这是Perl真正闪耀的地方,这正是我所需要的——我的Perl有点生疏了。谢谢