环境
- ClashMac: 27.1.2
- Mihomo: 1.19.29
- macOS: 26.5 (25F71)
问题
当 select 策略组名称包含中文等非 ASCII 字符时,ClashMac 菜单和 ClashMacCLI select 都无法切换该组的节点。节点名称本身包含中文或 emoji 不影响切换。
相关但尚未定位到此条件的问题:#50、#185。
最小配置形态
proxy-groups:
- name: "CrossWall (克洛斯)"
type: select
proxies:
- "香港 A1"
- "香港 A2"
上述节点对应正常可用的代理,省略具体服务器和凭据。
复现步骤
-
载入含上述策略组的有效配置并启动核心。
-
在状态栏菜单中将 CrossWall (克洛斯) 从 香港 A1 切换到 香港 A2;界面选中项和实际策略均不改变。
-
通过 CLI 执行:
/Applications/ClashMac.app/Contents/MacOS/ClashMacCLI \
select 'CrossWall (克洛斯)' '香港 A2'
返回:
❌ 未能完成操作。(ClashCoreKit.MihomoClientError错误0。)
对照实验
-
不改节点名,只把策略组名从 CrossWall (克洛斯) 改为 CrossWall,重载同一份配置。
-
菜单切换和下面的 CLI 命令均立即成功:
/Applications/ClashMac.app/Contents/MacOS/ClashMacCLI \
select 'CrossWall' '香港 A2'
-
在组名仍为 CrossWall (克洛斯) 时,直接调用 Mihomo Controller API,对组名做 URL path percent-encoding 后执行 PUT /proxies/{group},响应为 HTTP 204,节点也确实改变。
这说明配置和 Mihomo 核心可以处理该组名,问题应在 ClashMac / ClashCoreKit 构造或发送选择请求的路径中。建议检查 /proxies/{group} 的 URL path component 编码;这是基于对照实验的推断。
预期行为
策略组名包含中文、空格、括号等合法字符时,应与 ASCII 组名一样可从菜单和 CLI 切换;失败时也应返回 Controller 的具体状态码或响应内容,而不是笼统的 MihomoClientError 0。
环境
问题
当
select策略组名称包含中文等非 ASCII 字符时,ClashMac 菜单和ClashMacCLI select都无法切换该组的节点。节点名称本身包含中文或 emoji 不影响切换。相关但尚未定位到此条件的问题:#50、#185。
最小配置形态
上述节点对应正常可用的代理,省略具体服务器和凭据。
复现步骤
载入含上述策略组的有效配置并启动核心。
在状态栏菜单中将
CrossWall (克洛斯)从香港 A1切换到香港 A2;界面选中项和实际策略均不改变。通过 CLI 执行:
返回:
对照实验
不改节点名,只把策略组名从
CrossWall (克洛斯)改为CrossWall,重载同一份配置。菜单切换和下面的 CLI 命令均立即成功:
在组名仍为
CrossWall (克洛斯)时,直接调用 Mihomo Controller API,对组名做 URL path percent-encoding 后执行PUT /proxies/{group},响应为 HTTP 204,节点也确实改变。这说明配置和 Mihomo 核心可以处理该组名,问题应在 ClashMac / ClashCoreKit 构造或发送选择请求的路径中。建议检查
/proxies/{group}的 URL path component 编码;这是基于对照实验的推断。预期行为
策略组名包含中文、空格、括号等合法字符时,应与 ASCII 组名一样可从菜单和 CLI 切换;失败时也应返回 Controller 的具体状态码或响应内容,而不是笼统的
MihomoClientError 0。