V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
patrickstar
V2EX  ›  Linux

git 在提交和签出的时候能否配置自动转换文件编码格式?

  •  
  •   patrickstar · 2017-03-30 12:40:03 +08:00 · 7470 次点击
    这是一个创建于 2581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    团队使用 GitLab ,现有的软件库(主要为 C/C++)基本都是在 linux 下编写的采用了 UTF-8 编码(无 BOM )纳入仓库,现在部分程序需要构建 Windows 版本(采用 VC12 ),面临最大的问题就是 VC12 的 cl, link, nmake 工具都不支持“无 BOM 的 UTF-8 ”编码( VC12 可以支持 UTF-8 with BOM 编码,但无 BOM 的 UTF-8 编码好像被中文 Windows 解析为 GBK 了),所以希望在 Winodows 上使用 git 在签出时能自动转换为 UTF-8 with BOM (即加上三个字节的 BOM 头),提交前能自动变回去(无 BOM 的 UTF-8 )提交,就像在 Windows 平台下把 core.autocrlf 设置为 true 时自动转换 LF 和 CRLF 这样子

    不知道 git 能不能实现这样的需求,如果不行就只有写个 python 脚本,在每次提交前和签出后进行手动转换
    11 条回复    2017-08-26 22:42:39 +08:00
    patrickstar
        1
    patrickstar  
    OP
       2017-03-30 12:41:52 +08:00
    我真不明白微软为啥子不认真支持一下 UTF-8 without BOM ,对于 UTF-8 ,好像加个 BOM 没有什么意义啊
    shuax
        2
    shuax  
       2017-03-30 12:50:57 +08:00
    u8 不知道能不能解决
    gesse
        3
    gesse  
       2017-03-30 13:21:06 +08:00
    patrickstar
        4
    patrickstar  
    OP
       2017-03-30 13:24:02 +08:00
    @shuax 可能我没说明白,我说的是源程序文件的编码,不是说程序内 字符串等内容的编码
    patrickstar
        5
    patrickstar  
    OP
       2017-03-30 13:25:57 +08:00
    @gesse 好像可以,只要能够加钩子,我尝试一下子,谢谢!
    uugklp
        6
    uugklp  
       2017-03-30 23:49:25 +08:00
    SoloCompany
        7
    SoloCompany  
       2017-03-31 02:01:31 +08:00
    何必这么麻烦,你在构建脚本上检测一下 windows 环境然后 chcp 65001 不就得了
    patrickstar
        8
    patrickstar  
    OP
       2017-03-31 12:41:05 +08:00
    @SoloCompany
    chip 65001 后可能可以在 cmd 下正确显示 UTF-8 文件内容(比如 type utf8.txt 可以把文件内汉字显示出来),但是关键问题是 Visuanl Studio 的 C++ 构建工具(如 cl.exe )不认识 UTF-8 without BOM 文件,这个问题主要出在微软的 VS 工具,参见: https://msdn.microsoft.com/en-us/library/xwy0e8f2(v=vs.120).aspx
    SoloCompany
        9
    SoloCompany  
       2017-03-31 13:27:19 +08:00
    但你的描述是 [但无 BOM 的 UTF-8 编码好像被中文 Windows 解析为 GBK 了]
    这个显然是根据配置或者环境来确定的
    应该在这个环节上来解决问题,如果环境不生效( chcp ),请检查一下项目配置是否有不正确的地方

    我就不信你把 Windows 的 system profile 和 user profile 的 default charset 都配置成 utf8 了还会用 GBK 加载?难道 VS 是专门给中国人写的吗
    zhiqiang
        10
    zhiqiang  
       2017-08-26 09:28:40 +08:00
    我面临同样的问题。楼主解决这个问题了吗, 能否分享以下方案?
    patrickstar
        11
    patrickstar  
    OP
       2017-08-26 22:42:39 +08:00
    @zhiqiang 一直未来得及学习 git hook 和它支持的脚本语法,所以还没解决!
    现在写了个 python 代码手动转换一下,临时凑合一下子
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3057 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 15:00 · PVG 23:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.