java - 从发送到 AWS/Amazon SQS 的消息中删除无效字符

标签 java unicode utf-8 aws-sdk amazon-sqs

上下文: 当消息在 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/

相关文章:

java - 二叉搜索树中序遍历到一个新的数组

java - 301 永久移动

java - 如何为 Spring 的 WebServiceTemplate 创建模拟对象?

php - 如何用PHP显示Unicode数据

python - unicode Python 字符串中的字节数

Mysql LIKE 子句和重音符号

utf-8 - 如何在只有部分编码错误的情况下转换文件?

java - 循环中的逻辑错误导致不需要的输出

java - 使用 Java 和 UTF-8 编码生成有效的 XML

c - 带有 unicode 路径的 gtk_file_chooser_get_filename