首先要解决这个问题..我已经在utf-8编码下重新编译了eggdrop。如果我用字符串(\u00a7
)编写转义序列,我能够回显utf-8字符,但由于某种原因我还不知道......我无法使用正则表达式来比较它们。 / p>
我正在尝试开发基于eggdrop的日志记录脚本,在tcl下编码。我已经花了几个小时做了什么,除了研究,但要么没有任何帮助,要么我在错误的地方寻找。
输入字符串§由用户在机器人所在的irc通道中键入。日志脚本linux侧将此字符解释为一个特殊的控制字符(I -think-),它在gedit中呈现为两行特殊字符,其外观看起来像'FFA7',FF在第一行,第二个A7,都装在一个盒子里。
我的正则表达式非常简单:
regexp -all {\u00a7} $text
我当然也尝试过:
regexp -all {\247} $text
不幸的是,正如已经说过的那样..它不起作用。我每次都得0,这意味着它永远不会匹配角色。
对于我所做的所有研究,我一直无法弄清楚eggdrop将字符串发送到tcl脚本的格式。唯一有效的方法就是将gedit中那个类似盒子的字符直接复制到脚本中......但是鉴于我无法复制这个字符,否则编码变得相当不可能。
问题..我想知道我在这里做错了,如果实际上有一种正确的方法来解释机器人发送的字符串,那么我可以正确地将其中的特殊字符转换为html实体。
答案 0 :(得分:1)
对于那些想知道的人,从我的测试中可以看出,我已经用简单的方法解决了这个问题:
set text [encoding convertfrom utf-8 $text]
我的其他函数用于替换它们应该的转义序列。我不知道在研究的早期我是如何错过的。