如题, 只要是中文过去, gptel-log 输出就会是乱码, 导致 发送/回复 的文本都是乱码, 不能正常使用.
我已经使用 emacs -Q 测试了, 还是有乱码问题.
系统环境: Windows 10, Emacs 30.1 正式版, gptel 最新的 master
如图所示:
buffer 的编码是?zsbd
utf-8 unix
感觉不关 buffer 编码问题, 不管当前 buffer 编码是什么, 都会有问题
发起请求的方式呢?是curl 还是 Emacs 自己的 url?
应该是外部的 curl, 因为 gptel-use-curl 为 t
要是 gptel-use-curl 设置为 nil 直接不回复(相当与无响应)到当前buffer, 但是 gptel-log 是有看到回复的
我也试试 gemini 去…
如果调用gptel-request没有制定stream参数,是使用url request. log里面打印的json消息串没有显示汉字跟乱码无关。
但是,我还是不知道你这里为什么乱吗:)
对 gemini 遇到了相同的问题
我找找怎么回事去
有一点点发现了, 看起来是 gemini 的问题
我使用 deepseek 使用时, 虽然发送的是乱码, 但是回复的确实正经中文的而不是像 gemini 回复那样是乱码文
你使用 gemini 时, gptel-log 是怎么 发/回 的? 乱码文?
我没有 curl,用的 Emacs 的 url,和你一样没有输出但是有 Log 消息
解决了,不能用 stream 参数。
(setq gptel-model 'gemini-2.0-flash
gptel-backend (gptel-make-gemini "Gemini"
:key "你的 gemini api"))
(setq gptel-use-curl nil)
不过我不清楚具体原因。
macOS14 emacs31 gptel Gemini 中文正常
真奇怪啊, 要是使用 gemini 必须满足两个条件:
- 不能用 stream 参数
- gptel-use-curl 必须为 nil, 如果为 t, 那么不响应到当前buffer(但 gptel-log 有回)
不太懂,没怎么了解过 gptel 怎么调 api 的。
可以问问 AI 去
我配置了 stream 为 t,不知道 windows 和 macOS 调用 curl 有什么区别?
感觉不全是 curl 的原因,从 json 来看不管是 curl 还是 url.el 都正常返回了数据,但 Windows 上设定 :stream
参数就有问题。
不管了,能用就行
谢谢你, 让我又可以愉快的使用 gptel
这个乱码问题困扰了我好久了, 早知道早点询问了…
可能是用了windows自带的curl吧,还想用curl的可以试试msys带的(gptel没法指定curl路径,所以我以前尝试gptel的时候也是gptel-use-curl设为nil了,所以不确定msys的curl行不行)。