Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
patrickstar
V2EX  ›  Linux

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

  •  
  •   patrickstar · Mar 30, 2017 · 8891 views
    This topic created in 3504 days ago, the information mentioned may be changed or developed.
    团队使用 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 replies  •  2017-08-26 22:42:39 +08:00
    patrickstar
    patrickstar
    OP
    Mar 30, 2017
    1
    我真不明白微软为啥子不认真支持一下 UTF-8 without BOM ,对于 UTF-8 ,好像加个 BOM 没有什么意义啊
    momo1999
    momo1999
    Mar 30, 2017
    2
    u8 不知道能不能解决
    gesse
    gesse
    Mar 30, 2017
    3
    patrickstar
    patrickstar
    OP
    Mar 30, 2017
    4
    @shuax 可能我没说明白,我说的是源程序文件的编码,不是说程序内 字符串等内容的编码
    patrickstar
    patrickstar
    OP
    Mar 30, 2017
    5
    @gesse 好像可以,只要能够加钩子,我尝试一下子,谢谢!
    SoloCompany
    SoloCompany
    Mar 31, 2017
    7
    何必这么麻烦,你在构建脚本上检测一下 windows 环境然后 chcp 65001 不就得了
    patrickstar
    patrickstar
    OP
    Mar 31, 2017
    8
    @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
    SoloCompany
    Mar 31, 2017
    9
    但你的描述是 [但无 BOM 的 UTF-8 编码好像被中文 Windows 解析为 GBK 了]
    这个显然是根据配置或者环境来确定的
    应该在这个环节上来解决问题,如果环境不生效( chcp ),请检查一下项目配置是否有不正确的地方

    我就不信你把 Windows 的 system profile 和 user profile 的 default charset 都配置成 utf8 了还会用 GBK 加载?难道 VS 是专门给中国人写的吗
    zhiqiang
    zhiqiang
    Aug 26, 2017
    10
    我面临同样的问题。楼主解决这个问题了吗, 能否分享以下方案?
    patrickstar
    patrickstar
    OP
    Aug 26, 2017
    11
    @zhiqiang 一直未来得及学习 git hook 和它支持的脚本语法,所以还没解决!
    现在写了个 python 代码手动转换一下,临时凑合一下子
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1431 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:03 · PVG 06:03 · LAX 14:03 · JFK 17:03
    ♥ Do have faith in what you're doing.