我正在编写一个bash脚本,该脚本需要解析包含特殊字符(例如@!'ó)的html。当前,我正在运行整个脚本,它会忽略或触发这些查询,因为它们是作为十进制Unicode从服务器返回的,例如:'。我想出了如何解析并转换为十六进制并将它们加载到python中以将它们转换回其符号的方法,我想知道bash是否可以原生进行此最终转换。 python中的简单示例:

print ur"\u0032" ur"\u0033" ur"\u0040"


打印出来

23@


我可以在Bash中获得相同的结果吗?我已经研究过iconv,但我认为它无法完成我想要的工作,或者更可能是我不知道该怎么做。

以下是一些相关信息:

Python String Literals

Hex to UTF conversion in Python

这是预期输入输出的一些示例。


  Ludwig van Beethoven - 5th Symphony and 6th Symphony ''Pastoral'' - Boston Symphony Orchestra - Charles Munch
  
  Ludwig van Beethoven - 5th Symphony and 6th Symphony ''Pastoral'' - Boston Symphony Orchestra - Charles Munch
  
  АлисА (Alisa) - Мы вместе. ХХ лет (My vmeste XX let)
  
  АлисА (Alisa) - Мы вместе. ХХ лет (My vmeste XX let)

最佳答案

Bash中内置的printf不支持Unicode代码,但是外部printf(至少在基于GNU的系统上)支持:

$ /usr/bin/printf "\u0410\u043b\u0438\u0441\u0410"
АлисА


或此命令,如果它不在printf中,则会从路径中选择/usr/bin

$ $(type -P printf) "\u0410\u043b\u0438\u0441\u0410"
АлисА


要么

$ env printf "\u0410\u043b\u0438\u0441\u0410"
АлисА

关于python - Bash等效于utf字符串转换的Python字符串文字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3191110/

10-10 01:20
查看更多