#1 - 2021-12-15 21:54
小白坑HHH (还我穷鬼套餐!)
最近和群友聊天,突然想用mirai框架写个机器人
登录成功后就想先搞点机械式的应答,然后问题就来了

设置的回复代码长这样:

测试结果长这样:

console里的log长这样:(码就不打了,大佬们留情)

以及idea的编码设置:



想问的就是,为什么不进行转换会收到乱码,以及为什么qq里的显示和console刚好反过来了
给个提示也好,谢谢各位了。。。
#2 - 2021-12-15 23:59
(好烦T_T)
删除了回复
#3 - 2021-12-16 00:04
#3-1 - 2021-12-16 00:45
#3-2 - 2021-12-16 21:08
小白坑HHH
大概明白了,感谢肥肥(菜鸡落泪)
#4 - 2021-12-16 00:51
(大変に気分がいい)
第一行因为你发送的编码是UTF-8的,qq以为是GBK(我猜是因为请求头没正确设置Content-Type: text/html; charset=utf-8),以GBK读取了你的UTF8编码的字符串,由于UTF8中文编码的特点,GBK会读出大量古文
而在你的控制台,是以UTF8读取的,所以正常
#5 - 2021-12-16 01:04
(大変に気分がいい)
第二行和第三行都是从一个new出来的字符串读出字节,我猜你的Java默认的平台编码是GBK(可能由于是简体中文的windows系统导致的,可以通过参数指定,比如java -Dfile.encoding=UTF-8),所以news string的getBytes方法在不指定Charset或者指定GBK为charset的时候,get出来都是GBK编码字节流,此时append的第二个参数又指定了用UTF-8读,就会被UTF8替换成很多问号,这是UTF-8的兜底字符
但是QQ还是以GBK形式读取,所以正确

----
and以上大半是根据经验猜的其实我没写过几行Java好怕翻车2333333
#5-1 - 2021-12-16 21:12
小白坑HHH
昨天又试了一下,怀疑是clone了一个UTF-8源码的项目,但是本机又是GBK,所以各种不对付。。。(因为我自己照着重新敲一遍就好了。。。)
这个故事告诉我们不要随便copy别人的文件 (废物发言)
#6 - 2021-12-17 04:04
上古编码问题图
#6-1 - 2021-12-17 09:08
CrazyScientist
收藏了
#6-2 - 2021-12-17 11:02
Uaoko
+1
#6-3 - 2021-12-18 10:53
小白坑HHH
码住码住
#6-4 - 2021-12-18 12:45
徒手开根号二
好图啊...
#6-5 - 2021-12-18 12:55
可乐呀
mark
#6-6 - 2021-12-18 22:51
𝒮𝒽𝓊𝓊𝒾𝒸𝒽𝒾
有高清重制版吗(bgm39)
#6-7 - 2021-12-20 12:59
liuex
马克收藏
#7 - 2021-12-17 10:06
(好好科研,好好灌水)
虽然我不懂编码,但是感觉楼主可以试试 nonebot 之类的框架,相当于把 mirai 看作服务端,框架处理聊天回复,编程上会简单一些。
我个人用的是HoshinoBot,PCR 玩家应该很熟悉了
#7-1 - 2021-12-20 13:05
烈之斩
现在这种可以随便用了么?我记得之前有段时间基本不买那种给qq交过保护费的收费机器人其他的都被各种干
#7-2 - 2021-12-20 14:18
#7-3 - 2021-12-20 18:18
阿铁
烈之斩 说: 现在这种可以随便用了么?我记得之前有段时间基本不买那种给qq交过保护费的收费机器人其他的都被各种干
貌似之前被封过一次?感觉现在还好,目前还在正常用,不过我后端是 go-cqhttp,个人感觉比 mirai 稳定一些