gpt4 book ai didi

java - 如何理解HttpLoggingInterceptor.class中的方法 'isPlaintext'?

转载 作者:行者123 更新时间:2023-12-02 06:17:17 26 4
gpt4 key购买 nike

我很困惑如何定义人类可读文本。我猜既然Unicode包含了几乎所有的语言字符,那么只要codePoint在里面,它就是可读的。

但是在 HttpLoggingInterceptor # isPlaintext(buffer) :

static boolean isPlaintext(Buffer buffer) {
try {
Buffer prefix = new Buffer();
long byteCount = buffer.size() < 64 ? buffer.size() : 64;
buffer.copyTo(prefix, 0, byteCount);
for (int i = 0; i < 16; i++) {
if (prefix.exhausted()) {
break;
}
int codePoint = prefix.readUtf8CodePoint();
if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) {
return false;
}
}
return true;
} catch (EOFException e) {
return false; // Truncated UTF-8 sequence.
}
}

它表明如果字节包含非空白控制字符,则字节不可读。

这是什么原因呢?谢谢。

最佳答案

AFAI 可以看到 readUtf8CodePoint 返回给定缓冲区的 UTF-8 代码点。

来自维基百科

UTF-8 is a variable width character encoding capable of encoding all 1,112,064 valid code points in Unicode using one to four 8-bit bytes.

因此 Unicode 不一定只涵盖人类可读的字符。因此,UTF-8 范围以及 unicode \u0000\u001F\u007F\u009F 范围内的控制字符 这些不是人类可读的。

记住 Unicode 是标准,UTF-8 是编码 Unicode 的方法之一。

关于java - 如何理解HttpLoggingInterceptor.class中的方法 'isPlaintext'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55860366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com