Skip to content

feat: 更多的本地歌词 编码支持 #910

Closed

Description

@GoEverLo

What problem does this solve?

在纯离线模式下播放本地歌曲时,部分歌曲的歌词无法载入。

复现过程:

断网状态下,播放此前已导入并留存在本地的歌曲,歌词无法正常载入。
检查歌词文件与音频文件处于同一文件夹,命名规则也有对应关系,确认无误。
使用其他本地音乐软件导入同一批文件,歌词可正常显示。
排查后发现,WaveFlow 能正常载入的歌词均为 UTF-8 编码;无法载入的歌词均为 GB18030 编码。
初步结论:歌词文件编码为 GB18030 时无法读取,UTF-8 可以正常读取。

Proposed solution

本地歌词读取时兼容常见中文编码,即在按 UTF-8 读取失败后,自动回退尝试 GB18030(或 GBK)解码,从而让非 UTF-8 编码的本地歌词也能正常显示。

Alternatives considered

由用户手动将歌词文件转码为 UTF-8,对已有的大量本地文件来说操作成本高。

Rough scope

Small (one card / one command / one menu entry)

Anything else?

foobar2000 歌词插件正常
https://github.com/ESLyric/release

这份压缩包中包含两份歌词,在使用WaveFlow播放的时候我确认和歌曲命名相同,但是只有UTF-8的那份能播放。
麦恩莉-方大同.zip

Activity

  1. self-assigned this
    on Oct 19, 2026
  2. InstaZDLL commented on Oct 19, 2026

    @InstaZDLL
    Owner

    感谢反馈,也谢谢你附上的两份歌词文件,帮了大忙!

    问题确认了:WaveFlow 之前只按 UTF-8 读取本地歌词,GB18030 编码的文件会被直接跳过。修复在 #917 里:先识别 BOM,再按 UTF-8 读取,失败时自动检测编码(GB18030/GBK、Big5、Shift_JIS、EUC-KR 等)。没有固定回退到 GB18030,是为了不把日文、韩文歌词错解成乱码。

    我用你提供的 GB18030 歌词测试过,读出的内容和 UTF-8 版本完全一致。手动导入 LRC 和导入 .m3u 歌单也一起支持了。

    先把这个 issue 重新打开,PR 合并后会自动关闭。

  3. GoEverLo commented on Oct 19, 2026

    @GoEverLo
    Author

    抱歉贸然关闭了issus,我不太熟悉开源软件的issus流程,以为打上 planned 标签表示会有相关规划就足够了。后续发布release,有这方面功能的更新,我会再测试的。

  4. InstaZDLL commented on Oct 19, 2026

    @InstaZDLL
    Owner

    没关系,完全不用道歉!你附上的示例文件和排查过程帮了很大的忙。

    以后 issue 保持打开就好:修复合并后会自动关闭,你也会收到通知。

    这个修复计划包含在下一个版本里。之前已经播放过、显示「无歌词」的歌曲,到时也会自动重新读取 GB18030 歌词,不需要清除缓存。

    测试时如果发现任何问题,随时在这里留言。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestplannedPlanned for a future releasescope: backendRust/Tauri backend (src-tauri/)type: featNew feature

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions