Bry*_*eld 15 java unicode json control-characters
我正在重新发明轮子并在Java中创建自己的JSON解析方法.
我要去json.org上的(非常好的!)文档.我不确定的唯一部分是它所说的"或控制性格"
由于文档非常清晰,并且JSON非常简单易于实现,我认为我会继续并且需要规范而不是松散.
我如何正确地删除Java中的控制字符?也许有一个unicode系列?

我被告知在定义的范围 1 2之外还有其他控制字符可能在<script>标签中很麻烦.
最值得注意的是字符U + 2028和U + 2029,线和段落分隔符,它们充当换行符.在字符串文字的中间注入换行符很可能会导致语法错误(未终止的字符串文字).3
虽然我认为这不会造成XSS威胁,但在<script>标签中添加额外的规则仍然是一个好主意.
\u符号编码所有非"ASCII可打印"字符.这些角色开始时并不常见.如果您愿意,可以添加到白名单,但我建议使用白名单方法.</script(不区分大小写),这可能会导致HTML脚本注入到您的网页与人物</script><script src=http://tinyurl.com/abcdef>.默认情况下,这些字符都不是以JSON编码的.将Character.isISOControl(...)吗?顺便提一下,UTF-16是Unicode代码点的编码......您是要在字节级别,还是在字符/代码点级别进行操作?我建议将UTF-16的映射保留到Java核心API的字符流中......
我知道这个问题几年前就被问过,但我还是要回复,因为接受的答案不正确。
Character.isISOControl(int codePoint)
Run Code Online (Sandbox Code Playgroud)
执行以下检查:
(codePoint >= 0x00 && codePoint <= 0x1F) || (codePoint >= 0x7F && codePoint <= 0x9F);
Run Code Online (Sandbox Code Playgroud)
JSON 规范定义于https://www.rfc-editor.org/rfc/rfc7159:
- 弦乐
字符串的表示形式与 C 系列编程语言中使用的约定类似。字符串以引号开头和结尾。所有 Unicode 字符都可以放在引号内,但必须转义的字符除外:引号、反斜线和控制字符(U+0000 到 U+001F)。
Character.isISOControl(int codePoint)
Run Code Online (Sandbox Code Playgroud)
将标记所有需要转义的字符(U+0000-U+001F),尽管它也会标记不需要转义的字符(U+007F-U+009F)。不需要转义字符(U+007F-U+009F)。
| 归档时间: |
|
| 查看次数: |
7675 次 |
| 最近记录: |