当前位置: 首页 > 知识库问答 >
问题:

SocketChannel如何处理ByteBuffer中切割的UTF-8炭和线

袁赞
2023-03-14

我的系统通过SocketChannel接收以0x0D 0x0A结尾的UTF-8线路。我在ByteBuffer中读取数据,如下所示:

final ByteBuffer buffer = ByteBuffer.allocate(bufsize);
final int bytesRead = _mySocket.read(buffer);

缓冲区足够大,可以容纳很多行。但是我不能有一个足够大的缓冲区来容纳所有的行,行是动态处理的。

缓冲区不能包含所有行,因此可以拆分行,编码为一个字节的字符也可以拆分。

我想到了一个解决方案:

  1. 通过逐字节分析ByteBuffer(我搜索0x0D 0x0A)来处理我可以提取的所有行。

java或任何库已经提供了这个功能吗?

谢谢你的回答米卡

共有1个答案

何博涛
2023-03-14

我建议使用java.util.扫描仪,它知道如何处理SocketChannel,它知道如何读取行

    Scanner sc = new Scanner(_mySocket);
 类似资料:
  • 问题内容: 为了找出C ++是否适合我的项目,我想测试UTF-8功能。根据参考,我构建了以下示例: 但是,当我输入UTF-8字符时,它的行为不正确: 它不仅不打印,而且立即退出。告诉我没有坠机事故,但出口正常,但是我很难相信。 问题答案: 在Linux上不要使用wstring。 std :: wstring VS std :: string 看看第一个答案。我确定它能回答您的问题。 什么时候应该在

  • 问题内容: 昨天我对一个问题的回答之一是建议我确保我的数据库可以正确处理UTF-8字符。我该如何使用MySQL? 问题答案: 更新: 简短答案-您几乎应该始终使用字符集和排序规则。 更改数据库: 看到: 亚伦对此答案的评论如何使MySQL正确处理UTF-8 utf8_general_ci和utf8_unicode_ci有什么区别 转换指南:https : //dev.mysql.com/doc/r

  • 问题内容: 下面是测试程序,包括一个汉字: 以下是结果,请看json.dumps将utf-8转换为原始数字! 为什么这坏了?还是我错了? 问题答案: 您应该阅读json.org。完整的JSON规范在右侧的白框中。 生成的JSON没有错。允许生成器生成UTF-8字符串或纯ASCII字符串,在这些字符串中使用符号转义字符。在您的情况下,Python 模块决定转义,并使用转义符号。 顺便说一句:任何符合

  • 问题内容: 我正在寻找有关如何处理来自用户的无效UTF-8输入的一般策略/建议。 即使我的Web应用程序使用UTF-8,还是有些用户输入了无效字符。这会导致PHP的json_encode()错误,并且总体而言似乎是个坏主意。 W3C I18N常见问题解答:多语言形式说:“如果接收到非UTF-8数据,则应将错误消息发送回去。”。 在整个站点中有数十个可以输入数据的站点中,实际上该怎么做呢? 您如何以

  • 除非我能在确保输入文件是用UTF-8编码后使测试工作,否则什么是基本错误,我真正感兴趣的问题是: 上面的方法是否保证了UTF-8文件中的缺陷也被逐个复制,或者将字符加载到的过程是否改变了这一点?

  • 问题内容: 我正在尝试使用preg_match搜索UTF8编码的字符串。 这应该打印1,因为“ H”在字符串“¡Hola!”中的索引1处。但是它显示为2。因此,即使我在正则表达式中传递了“ u” 修饰符,似乎也不会将主题视为UTF8编码的字符串。 我在php.ini中具有以下设置,并且其他UTF8功能正在运行: 有任何想法吗? 问题答案: “ u”开关仅对pcre有意义,PHP本身并未意识到。 从