LagrangeDev / Lagrange.Core

An Implementation of NTQQ Protocol, with Pure C#, Derived from Konata.Core
GNU General Public License v3.0
2.09k stars 262 forks source link

[Feature Request]: 一些从其他移植到本项目发现的一些问题 希望新增UTF8的支持 #335

Closed Lioncky closed 6 months ago

Lioncky commented 6 months ago

Lagrange项目

Core

新需求内容

有一些问题个人认为不人性化: 1.Json解析过于严格 \n换行字符必须转义为\u000A 导致ws性能下降 2.默认使用Unicode而非UTF8导致移植不方便 希望新增UTF8的支持 3.HTTP反向必须URL Encode 无所谓 毕竟不可能谁的socket都高性能写法 4.提升项目能跟gocq一样轻量化等级 路由器部署这个就比较伤了 5.希望项目越做越好吧 能在现有成就上更上一层

有空我会提交PR 主要是C#太重 很久没用了

TheSnowfield commented 6 months ago

1.2.3 @System.Text.Json

  1. 不太可能,dotnet直到現在爲止都還非常重。和golang不是一個等級的東西,更不可能替代。
  2. 謝謝,但是不能一紙空文,我們更想看到你的參與,並且開始改進本項目。
Executor-Cheng commented 6 months ago
  1. System.Text.Json 拒绝读取未转义的ASCII字符: https://github.com/dotnet/runtime/blob/b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs#L1380-L1383
    else if (currentByte < JsonConstants.Space)
    {
    ThrowHelper.ThrowJsonReaderException(ref this, ExceptionResource.InvalidCharacterWithinString, currentByte);
    }

    本验证方法也引用了 RFC 8259 Section 7: All Unicode characters may be placed within the quotation marks, except for the characters that MUST be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F)

  2. 还请明确一下是不是反序列化时不能传入 byte[] 或其它类似的 Utf8 数据
  3. 意思是路径里边不要严格?
  4. 你也知道整个 runtime 很重, 上 AoT 也不一定能星
Lioncky commented 6 months ago

本验证方法也引用了 RFC 8259 Section 7: All Unicode characters may be placed within the quotation marks, except for the characters that MUST be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F) 2. 还请明确一下是不是反序列化时不能传入 byte[] 或其它类似的 Utf8 数据 3. 意思是路径里边不要严格? 4. 你也知道整个 runtime 很重, 上 AoT 也不一定能星

路径里面没试过 单纯走 send_xxx_msg 只要text里面有 \n就发不出去 要转义\u000A

Executor-Cheng commented 6 months ago

路径里面没试过 单纯走 send_xxx_msg 只要text里面有 \n就发不出去 要转义\u000A

这就是你发过来的 json 不符合 RFC 8259 规范导致的问题, 因此这个是确定 won't fix 的

Lioncky commented 6 months ago

路径里面没试过 单纯走 send_xxx_msg 只要text里面有 \n就发不出去 要转义\u000A

这就是你发过来的 json 不符合 RFC 8259 规范导致的问题, 因此这个是确定 won't fix 的

太严格了 应该内部处理下

ghost commented 6 months ago

太严格了 应该内部处理下

规范不是用来打破的