今天遇到的报错:
java.lang.llegalArgumentException: Unexpected char 0x957f at 0 in x-brand value: 电视
堆栈
okhttp3.Headers.checkValue(Headers.java:272)
okhttp3.Headers$Builder.add(Headers.java:312)
okhttp3.Request$Builder.addHeader(Request.iava:196)
查了下源码,才发现 okhttp 在 3.12.0 版本开始,在okhttp3的 Headers 中新增了一组函数:
传入中文开始会无法通过检查而 crash
在 Unicode 字符集中,
\u001f
到\u007f
之间包含了一些特殊字符、标点符号、数字、大写字母、小写字母以及其他常见的 ASCII 字符。这个范围通常是指 ASCII 控制字符和可打印字符。以下是
\u001f
到\u007f
之间的一些常见字符:
ASCII 控制字符(
\u0000
到\u001f
):
\u001f
: Unit Separator\u001e
: Record Separator\u001d
: Group Separator- 等等
可打印 ASCII 字符(
\u0020
到\u007e
):
- 空格
- 数字
0-9
- 大写字母
A-Z
- 小写字母
a-z
- 标点符号
, . ! ?
等等这个范围包括了 ASCII 字符集中的大部分常用字符,涵盖数字、字母、标点符号以及一些特殊字符。在文本处理和编程中,这些字符通常被认为是可打印字符或者基本的控制字符。