Skip to content

同步文件夹路径含中文时,实际同步到非预期的路径 #576

@binsee

Description

@binsee

weasel版本:0.14.3
系统版本:win10 x64

问题描述

installation.yaml 中配置 sync_dir 以将配置同步到指定目录。
但当指定的目录路径中包含中文(非ansi字符)时,实际同步到的路径是一个乱码路径,而非配置文件中指定路径。

详细

  • 配置文件:installation.yaml
# encoding: utf-8

distribution_code_name: Weasel
distribution_name: "小狼毫"
distribution_version: 0.14.3
install_time: "Sat Oct 31 01:25:18 2020"
installation_id: "MyPC"
rime_version: 1.5.3
sync_dir: 'E:\Documents\坚果云\RimeSync'
  • 执行同步

  • 实际同步到的路径: E:\Documents\鍧氭灉浜慭RimeSync\MyPC
    image

  • 而将配置文件以 ANSI 编码保存,则可以同步到预期路径

分析

根据测试如下:

// utf-8编码
E:\Documents\坚果云\RimeSync

// 以ANSI编码显示
E:\Documents\鍧氭灉浜慭RimeSync
  • rime的yml默认都是utf-8编码,因此修改installation.yaml 时默认也是utf-8
  • librime从 installation.yaml 读取路径数据,但生成路径时却是将路径当作ANSI编码处理。
  • 当路径字符串包含中文且以utf-8编码,直接当作ANSI编码使用时,便会导致乱码

暂时的解决方式

  • 同步文件夹路径不要包含中文
  • installation.yaml 文件以ANSI编码进行保存

补充

由于weasel是调用librime的api来执行的同步操作,因此问题代码在librime中,此issue或许应转移至librime。
但由于不熟悉c++,怀疑是否是属于编译方面问题或其他,因此发在weasel中,请维护者给予判断,是否应转移到librime。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions