0

我目前正在为多语言频道开发 irc 机器人,我遇到了一些 unicode 问题,这些问题几乎无法解决。

无论我似乎尝试了哪种 unicode 编码配置,下面代码所在的 list 函数都没有任何作用(c.notice 是一个类函数,它向 irc 服务器发送 NOTICE 命令)或者当它确实做某事时,吐出显然没有编码的东西。

该命令应该发送天子,但它似乎一心想要发送 天å 与先前配置的相同命令。我在下面指定的是“不发送任何内容”类型。在此之前我没有使用过 unicode,因此我很困惑。我也很肯定我这样做是完全错误的结果。

(compileCMD 只需要一个列表并吐出列表中所有元素的单个字符串)

uk = self.compileCMD(self.faq.keys(),0)
ukeys = unicode(uk,"utf-8").encode("utf-8")
c.notice(nick, u"Current list of faq entries: %s" % (uk))
4

3 回答 3

1

几点:

  • 字节“天å”是“天子”的UTF-8编码,所以你确定这是错误的发送吗?应该处理数据的程序/...是否使用 UTF-8,或者它只是将输入解释为不同的编码,如 Latin-1?
  • unicode(uk,"utf-8").encode("utf-8"): 解码 UTF-8 然后重新编码为 UTF-8 不会改变任何东西。
  • ukeys = unicode(uk,"utf-8").encode("utf-8"):包含重新编码数据的ukeys变量稍后不会使用。
于 2010-03-30T18:35:32.873 回答
1

原来问题出在我用来测试输出的客户端上——它本身没有正确处理 unicode!

于 2010-03-31T03:31:52.640 回答
0

改变这个:

u"Current list of faq entries: %s" % (uk)

进入这个:

"Current list of faq entries: %s" % (uk)

然后再试一次。确保它uk已经是一个 UTF-8 编码的字符串(不是 unicode)。

我假设 c.notice 方法将编码字符串作为参数,因为它必须通过网络发送编码字符串。如果频道是多语言的,那么可以肯定的是,它希望将其编码为 UTF-8。另外,删除无用的ukeys = unicode(uk,"utf-8").encode("utf-8")行。

于 2010-03-30T22:58:14.910 回答