1

首先要解决这个问题。我已经在 utf-8 编码下重新编译了 eggdrop。如果我在 strings( \u00a7) 中编写转义序列,我可以回显 utf-8 字符,但由于某种原因,我还无法弄清楚.. 我无法使用正则表达式将它们与对应的字符进行比较。

我正在尝试开发一个基于 eggdrop 的日志记录脚本,在 tcl 下编码。我已经花了几个小时只做研究,但要么没有任何帮助,要么我找错了地方。

用户在机器人所在的 irc 频道中键入输入字符串 §。linux 端的日志记录脚本将此字符解释为特殊控制字符(I -think-),并在 gedit 中呈现为外观类似于 'FFA7' 的两行特殊字符,FF 在第一行,第二个A7,全部装在一个盒子里。

我的正则表达式很简单:

regexp -all {\u00a7} $text

我当然也尝试过:

regexp -all {\247} $text

不幸的是,正如已经说过的......它不起作用。我每次都得到一个 0,这意味着它永远不会匹配字符。

对于我所做的所有研究,我一直无法弄清楚 eggdrop 将字符串发送到 tcl 脚本的格式。唯一有效的方法是将那个类似盒子的字符从 gedit 直接复制到脚本中。但考虑到我无法复制这个字符,否则编码变得相当不可能。

对于这个问题..我想知道我在这里做错了什么,如果实际上有正确的方法来解释机器人发送的字符串,那么我可以正确地将其中的特殊字符转换为 html 实体。

4

1 回答 1

1

对于那些想知道的人,从我的测试中可以看出我已经用简单的方法解决了这个问题:

set text [encoding convertfrom utf-8 $text]

我的其他功能可以按应有的方式替换转义序列。我不知道我在研究早期是怎么错过的。

于 2013-02-23T03:22:08.753 回答