hg 跨平台使用,文件名乱码

2016-11-04 12:18:19 +08:00
 bluesky139

不知道这里用 hg 的人多不,我在 windows 下创建的 repo ,在 windows 下克隆使用一切正常,但是到 mac 下克隆出来的中文文件名会乱码,有什么解么?

网上查了各种方法都不对,包括 FixUtf8 , set LANG environment ,传递 encoding 参数,还是说我弄错了什么。

3083 次点击
所在节点    程序员
10 条回复
neoblackcap
2016-11-04 12:29:02 +08:00
你确认是 hg 的问题而不是本身文件的编码问题?
congeec
2016-11-04 12:30:11 +08:00
你在 Windows 下文件的中文名编码可能是 GBK, GB18030, UTF-16-LE, UTF-8. 改 OS X 的 Terminal.app (如果你用这个 Console )输出字符串的编码和 Shell 里的 LC 打头的编码包括 LANG ),都改成跟 Windows 一致的。
P.S. 我不用 hg ,可能 hg 本身也能指定 Encoding ,这个你自己看着办了
bluesky139
2016-11-04 12:33:59 +08:00
@neoblackcap 不是文件编码,是文件名编码。
jarlyyn
2016-11-04 13:23:01 +08:00
为什么会有中文文件名……
这是坑自己啊
bluesky139
2016-11-04 13:25:15 +08:00
@jarlyyn 非程序人员使用的一些文件。
BOYPT
2016-11-04 13:34:12 +08:00
先确认仓库里面的文件名是什么编码, 如果那文件当初在 win 提交的,那大可能仓库里面就已经是 gbk 编码的文件名,因此 fixutf8 插件没用, fixutf8 插件是对仓库中 utf8 文件名的文件在 win 平台 checkout 时候使用本地编码的补丁,因此楼主需要一个“反 fixutf8 ”插件……(就是把 fixutf8 里面几个变量倒过来)

。。上次使用 mercurial 都 5 6 年前了,就是因为这类坑,但是这个是设计问题, hg 设计是保持提交者的原汁原味,所以比较无解的。
所以楼主有两选择:
1. 自己本地弄个反 fixutf8
2. 修改仓库内为 utf8 ,参考 http://serverfault.com/questions/319070/mercurial-convert-filename-encoding
neoblackcap
2016-11-04 13:37:17 +08:00
@bluesky139 https://www.selenic.com/mercurial/hg.1.html#win32mbcs 试试这个,不过 mercurial 官方是说请使用 ascii 作为文件名来在跨平台上面使用
zhuangzhuang1988
2016-11-04 13:50:15 +08:00
调试一下 hg 就好了...
zhuangzhuang1988
2016-11-04 14:04:18 +08:00
就像这样, 最快找问题的办法, 调试.

introom
2016-11-04 18:54:32 +08:00
我不能给建设性的意见,不过我以上读过 mercurial 的源码,很简单,所以你要是半天否解决不了,不如花半天时间看它代码,多半能找出哪一步是问题所在,这也是我解决问题的办法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/317986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX