不知道这里用 hg 的人多不,我在 windows 下创建的 repo ,在 windows 下克隆使用一切正常,但是到 mac 下克隆出来的中文文件名会乱码,有什么解么?
网上查了各种方法都不对,包括 FixUtf8 , set LANG environment ,传递 encoding 参数,还是说我弄错了什么。
1
neoblackcap 2016-11-04 12:29:02 +08:00
你确认是 hg 的问题而不是本身文件的编码问题?
|
2
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 ,这个你自己看着办了 |
3
bluesky139 OP @neoblackcap 不是文件编码,是文件名编码。
|
4
jarlyyn 2016-11-04 13:23:01 +08:00
为什么会有中文文件名……
这是坑自己啊 |
5
bluesky139 OP @jarlyyn 非程序人员使用的一些文件。
|
6
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 |
7
neoblackcap 2016-11-04 13:37:17 +08:00
@bluesky139 https://www.selenic.com/mercurial/hg.1.html#win32mbcs 试试这个,不过 mercurial 官方是说请使用 ascii 作为文件名来在跨平台上面使用
|
8
zhuangzhuang1988 2016-11-04 13:50:15 +08:00
调试一下 hg 就好了...
|
9
zhuangzhuang1988 2016-11-04 14:04:18 +08:00
就像这样, 最快找问题的办法, 调试.
|
10
introom 2016-11-04 18:54:32 +08:00 via Android
我不能给建设性的意见,不过我以上读过 mercurial 的源码,很简单,所以你要是半天否解决不了,不如花半天时间看它代码,多半能找出哪一步是问题所在,这也是我解决问题的办法。
|