上下文:
当消息在 sqsClient.sendMessage(...)
的参数中传递时,Amazon SQS 对它接受的字符范围有限制。
(提到here)。
摘自上述链接:
消息只能包含 XML、JSON 和无格式文本。允许使用以下 Unicode 字符:
#x9 | #xA | #xD | #x20 到 #xD7FF | #xE000 到 #xFFFD | #x10000 到 #x10FFFF
任何未包含在此列表中的字符都将被拒绝。
问题:
目前,我们知道作为消息发送的消息 json 中存在违规字符,因此我们通过以下方式将其过滤掉
message_json.replaceAll("\uffff", "");
这工作正常。 (其中 '\uffff' 是 xFFFF/U+FFFF 字符的 Java 表示形式)。
但是,我不想只对 xFFFF 字符执行此操作,而是想对上述整个范围执行此操作(#x9 | #xA | #xD | #x20 到 #xD7FF | #xE000 到 #xFFFD | #x10000 到 #x10FFFF
),但是如何构造一个可以采用一系列字符而不对每个字符运行替换的子句?
最佳答案
我遇到了这个问题并使用了这个正则表达式
/([^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}])/u```
关于java - 从发送到 AWS/Amazon SQS 的消息中删除无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58809098/