Linux 如何替换未知字符<&燃气轮机;和塞德?

Linux 如何替换未知字符<&燃气轮机;和塞德?,linux,tags,sed,mp3,fat32,Linux,Tags,Sed,Mp3,Fat32,今天我试图将一些MP3文件从外置驱动器导入到我的音乐文件夹中,这时我发现我的许多标签被错误地解释了。例如,带有诸如á、ó、í、ö、ä等字母的文件显示为矩形内的问号,类似如下:� 我所做的只是将所有mp3文件从外部fat32驱动器刻录到我自己的linux驱动器上。是否有办法删除此“特殊字符”,即使用字母?我失败的尝试是sed-e's/\?/ae/g'如下: id3v2 -l song.mp3 | grep Artist | cut -d ':' -f 2 | sed -e 's/\?/ae/g'

今天我试图将一些MP3文件从外置驱动器导入到我的音乐文件夹中,这时我发现我的许多标签被错误地解释了。例如,带有诸如á、ó、í、ö、ä等字母的文件显示为矩形内的问号,类似如下:�

我所做的只是将所有mp3文件从外部fat32驱动器刻录到我自己的linux驱动器上。是否有办法删除此“特殊字符”,即使用字母?我失败的尝试是sed-e's/\?/ae/g'如下:

id3v2 -l song.mp3 | grep Artist | cut -d ':' -f 2 | sed -e 's/\?/ae/g'

我在阅读链接时意识到,有些字母如ä,ö,á被解释为\341之类的数字。我认为这与FAT32到linux的代码转换有关,但我一点也不确定。有人知道如何用sed正确替换它们-欢迎使用其他解决方案;-)。谢谢你的建议

我不确定这个反向逻辑sed表达式是否可以作为您的sed问题的答案,但请尝试一下:

sed-re's/[^a-zA-Z0-9]+//g'


它获取每个字符的一个或多个实例,这些字符不是a-z。A-Z,0-9并将其移除。(有时,当允许的字符集有限,但不允许的字符数未知时,这是最简单的方法。您可能需要向要允许的表达式添加更多字符。)

标签在mp3文件中?如果是这样,我会避免在二进制文件上运行sed…

也许您会对
iconv
感兴趣。这是文件名或文件内的标记的问题吗?我的回答假设你指的是前者,但实际上你可能指的是后者。我可以将iconv集成到上面的字符串中(替换sed)吗@Zack转录错误与我的mp3文件中的标记有关。作为诊断,您可以尝试
id3v2-l song.mp3 | iconv-f cp1252-t utf-8
。如果输出的重音字母正确,我们就知道出了什么问题。然后,我们必须找出如何更正文件中的标记,我不知道如何立即更正。好的,对不起,我想我已经试过了。成功了!谢谢,我只是试了一下,但没有成功。出现的情况是空格和其他字符消失了,但未知字符仍然存在。但为什么?你建议用什么代替sed?