rabbitmqadmin无法处理unicode?

时间:2017-02-05 14:19:06

标签: python unicode rabbitmq

我可能偶然发现了一些似乎是关于rabbitmqadmin如何处理(或实际上不处理)unicode的错误。

如果我的队列在队列名中有unicode字符,则rabbitmqadmin命令将失败并显示UnicodeEncodeErrors。

我在Mac上运行RabbitMQ 3.6.6,通过Homebrew安装。 admin命令和服务器都是相同的版本。

步骤如何重现队列名称问题:

  1. 在其中创建一个包含unicode的队列:'rabbitmqadmin declare queue name =ööö'。
  2. 列出队列:'rabbitmqadmin list queues'
  3. 输出:

    Traceback (most recent call last):
      File "/usr/local/sbin/rabbitmqadmin", line 1007, in <module>
        main()
      File "/usr/local/sbin/rabbitmqadmin", line 413, in main
        method()
      File "/usr/local/sbin/rabbitmqadmin", line 588, in invoke_list
        format_list(self.get(uri), cols, obj_info, self.options)
      File "/usr/local/sbin/rabbitmqadmin", line 705, in format_list
        formatter_instance.display(json_list)
      File "/usr/local/sbin/rabbitmqadmin", line 716, in display
        (columns, table) = self.list_to_table(json.loads(json_list), depth)
      File "/usr/local/sbin/rabbitmqadmin", line 770, in list_to_table
        add('', 1, item, add_to_row)
      File "/usr/local/sbin/rabbitmqadmin", line 749, in add
        fun(column, subitem)
      File "/usr/local/sbin/rabbitmqadmin", line 756, in add_to_row
        row[column_ix[col]] = str(val)
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-13: ordinal not in range(128)
    

    当消息有效负载包含unicode字符时,我遇到与'rabbitmqadmin get queue ='类似的问题。

1 个答案:

答案 0 :(得分:1)

我认为你是对的,你可以使用python3,查看this answer它解释了为什么python3有效。

修改

1 - 我提交了issue

2 - 已修复至版本:3.6.7,请参阅PR