Skip to content

[潜在bug]table编码存在带声调字符从而引发注释~剩余编码计算出错引发崩溃 #1119

@amzxyz

Description

@amzxyz

问题描述

当字典词库的编码列包含“带调拼音”与“ASCII字符”的混合编码(例如:jiā'QQ)时,RIME 在尝试生成剩余编码提示(即 ~ 开头的注释)时会出现问题,。导致全角字符被切~ā'QQ

现象表现为:

  1. 程序崩溃(Crash);

原因分析

推测是 librime 在计算 remaining_code 长度并执行 substr 截取时,未能正确处理 UTF-8 多字节字符(带调拼音)与单字节字符(ASCII)混合后的字节偏移量。导致切分点落在了多字节字符的中间,破坏了字符结构。

复现示例

.dict.yaml 中添加:

加QQ	jiā'QQ
转换后编码jwqq

前端

Fcitx5

自行规避策略

使用有规则的转写改写注释段,或者清空
comment_format:
    - xform/^~.+$//

可能的程序规避建议

1、积极支持声调类字符,毕竟这与拼音与输入关系极大
2、检测到非法字符禁用剩余编码提示

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions