grails - RabbitMQ 在我的队列中写入错误的字符
问题描述
我正在尝试使用 grails 3.3.11 在 RabbitMQ 中发布消息。但是我遇到了巴西葡萄牙语字符的麻烦。
这似乎是字符集的问题,但我不知道如何解决它。如果有人知道,请帮助我。
处理队列中的消息后,我的代码在另一个队列中发布状态。问题是我发布了一条消息,但是当我在RabbitMQ中查看时,消息被错误的字符修改。特别适用于 à、ç、õ、ú 等巴西葡萄牙语字符。
那是我的队列发布代码,问题发生的地方。
def publishNewStatus(String solicId, String newStatus, String message){
rabbitMessagePublisher.send {
exchange = "plt.cmbsolic.requests.status"
body = [requestId:solicId,status:newStatus,message:message]
}
}
这是发布的控制台结果。请注意,它是正确的。
QUEUE CONSUMING => STARTED AT Thu May 13 17:58:49 BRT 2021
SOLICITATION ID STATUS => Status FAILED_IN_CMBID for solicitation 2419399765SOL01
API RESPONSE => Usuário 2419399765 não encontrado
QUEUE CONSUMING => FINISHED AT Thu May 13 17:58:49 BRT 2021
API 响应是变量 message,方法 publishNewStatus 的第三个参数。
但是如果我去队列,那就是存储在那里的消息。
{"requestId":"2419399765SOL01","status":"FAILED_IN_CMBID","message":"Usu\u00e1rio 2419399765 n\u00e3o encontrado"}
请注意,á 被 \u00e1 替换,ã 被 \u00e3 替换。
我该如何解决这个问题?
非常感谢。
阿尔弗雷多·奥利维拉
解决方案
我在这里复制@andrewjames 的观察。由于这不是问题,因此我可以注意到这一点。所以,这就是解决方案。
不是答案 - 只是观察:消息仍然是有效的 JSON。\u00e1 字符串是 JSON 存储 Unicode 转义字符的方式。因此,例如,您的 á 由该序列表示。因此,消息不仅有效,而且等同于您的原始文本。此 JSON 的任何使用者本身都应使用 JSON 库,该库应正确处理这些转义序列 - 例如,如果需要解析 JSON 并且需要向用户显示其文本。– 安德鲁詹姆斯 5 月 13 日 22:01
推荐阅读
- java - 如何安全地将 List 转换为 csv 字节数组?
- apache-nifi - NiFi - 无法从包含嵌套版本化进程组的注册表流中下载
- python - 从随机生成的数字中计算一个始终为正的值
- java - 在 Windows 上安装 SBT 的问题
- jquery - jQuery - 通过数据属性添加总和
- excel - Internet Explorer Mouseover Drop Down 的 Excel VBA 控件
- python-3.x - 按原样返回 XML,而不在 beautifulsoup 中添加外部 p 标签
- java - 为什么泛型不能应用于相同的签名?
- python - 使用 Whitenoise 在本地和 Heroku 上调试时出现错误 500
- sql - 将表的结果作为参数插入存储过程