GoldenDict如何设置页面编码为UTF-8

在词典–程序添加了以下命令行搜索命令

rga %GDWORD% "E:\00000\Search\TLP-3-columns.txt"

因为内容是德语,输出结果中一些德语字符出现乱码。

尝试在cmd中使用同样的搜索命令,但不会出现乱码。检查发现cmd页面编码就是GBK:

在PowerShell中查看系统编码信息:
[System.Text.Encoding]::Default

BodyName : gb2312
EncodingName : Chinese Simplified (GB2312)
HeaderName : gb2312
WebName : gb2312
WindowsCodePage : 936
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
IsSingleByte : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 936

尝试在命令行指定编码格式,但结果没有变化:

rga -E UTF-8  darstellen "E:\00000\Search\TLP-3-columns.txt"

请请教如何修改GoldenDict输出编码,避免字符乱码问题。

GoldenDict + Markdown(or 任何格式化良好的文本) - GoldenDict - 掌上百科 - PDAWIKI - Powered by Discuz!

查到之前也有人发现这个问题:

  1. // 因为 Windows 默认编码是 GB2312,所以本项目全部转换成此编码,包括 php 内部编码、本文件以及 note 文件保存的编码。
  1. // 最后输出时给 GoldenDict 时,不是很懂 GD 的编码机制,反正试验结果是:外部程序类型选纯文本时,必须输出 gb 格式;类型选 html 时,必须转换成 utf-8 输出给它……尝试全部使用 utf-8,但怎么试都是乱码,所以只好过程用 gb,最后一步转成 utf-8 给它。
  1. mb_internal_encoding(‘GB2312’);

可以先试一下启用 windows 设置里面什么地方的 “Beta: Use Unicode UTF-8 for worldwide language support.” 来解决这一类问题。

轻易别改动这个选项,我自己就是改动vscode界面里命令行的中文显示问题,动了这个选项,结果,弄得office里的宏都是识别不了中文,尤其是sheetName识别不了中文,外带一些乱七八糟的编码问题,影响到整个系统的指不定那个软件编码出问题。

这个选项在 Win11 里已经是默认开启的了。不清楚 office 什么情况,但是大部分情况下开启这个选项是正确的选择,因为大部分程序现在假设输入和输出是 UTF-8 编码。

GD 是继承上古时代的代码,按照本地的 codepage 来解码 。看楼主的情况,应该是GD 把输出当作把 gbk 来解码。

Anyway,我觉得 GD 也应该假定程序的输出是 UTF8 feat: decode program dicts as UTF-8 instead of local8bit by shenlebantongying · Pull Request #1821 · xiaoyifang/goldendict-ng · GitHub

我记得不是默认开启吧,开了会影响一些只支持gb2312和gbk的古老中文程序,打开会乱码。打开一些日文程序也会。

感谢。请问代码合并之后,下一版的GoldenDict-ng会解决这个问题对吗?

我的信息是从这里获得的,有可能不准确 :sweat_smile:winapi - WIndows 11 Default API and UTF Encoding - Stack Overflow

现在 Python, rust, java 都默认假设编码是 UTF-8,如果没有一些老一些的软件,开启那个选项有种一开解千愁的样子。

1 个赞

对,设置输出为 utf8 就可以了 Release v24.11.0-alpha.241013.9b84bf40 · xiaoyifang/goldendict-ng · GitHub

非常感谢,问题已解决

1 个赞