Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git,msysgit,accents,utf-8,最终答案_Git_Utf 8_Msysgit - Fatal编程技术网

git,msysgit,accents,utf-8,最终答案

git,msysgit,accents,utf-8,最终答案,git,utf-8,msysgit,Git,Utf 8,Msysgit,我在一些地方读到git(或者仅仅是msysgit?)和字符编码存在问题——我相信这只是文件名的问题 我想要的是一些关于以下方面的“权威性”(或至少权威性)信息: “问题”到底是什么?(症状) 原因是什么?(简略) 在什么情况下,这是一个表演的阻碍 是否有任何解决方案在望,或者没有任何解决办法 我希望这个问题不要太模糊,我认为最好将所有这些信息放在一个地方,让人们能够找到它……更新2017年2月(Git 2.12):字符宽度表已更新为符合Unicode 9.0 问题是:看 2014年8月更新(gi

我在一些地方读到git(或者仅仅是msysgit?)和字符编码存在问题——我相信这只是文件名的问题

我想要的是一些关于以下方面的“权威性”(或至少权威性)信息:

  • “问题”到底是什么?(症状)
  • 原因是什么?(简略)
  • 在什么情况下,这是一个表演的阻碍
  • 是否有任何解决方案在望,或者没有任何解决办法
  • 我希望这个问题不要太模糊,我认为最好将所有这些信息放在一个地方,让人们能够找到它……

    更新2017年2月(Git 2.12):字符宽度表已更新为符合Unicode 9.0
    问题是:看

    2014年8月更新(git 2.1):()增加了对Unicode 7.0的支持

    2014年4月更新:()增加了对Unicode 6.3的支持
    (git 1.9.2):

    Unicode 6.3将更多代码点定义为组合或重音
    例如,字符“
    o
    ”可以表示为“
    o
    ”,后跟组合DIARESIS的
    U+0308(又名umlaut,上面的双点)。
    我们应该考虑这样一个序列的两个代码点占据一个显示列的对齐目的,为此,应该返回0。p> 受影响的代码点包括:

    早期的unicode标准将其定义为“保留”

    仅检查了范围
    0..U+07FF
    ,以查看在准备此提交时哪些代码点需要标记为0宽度;可能需要更多更新


    2012年4月更新:Unicode支持在版本1.7.10中发布。有关应设置的注释和设置,请参见

    即:

    git config [--global] core.quotepath off
    git config [--global] i18n.logoutputencoding utf8
    git config [--global] i18n.commitencoding utf8
    git config [--global] --unset svn.pathnameencoding
    
    该命令扫描git存储库的整个历史,并打印所有非ASCII文件名。如果输出为空,则不需要迁移


    2012年2月更新:UTF-8支持的修补程序正在的“devel”分支中提交,包括

    Git for Windows Google+页面提到:

    Karsten Blees针对Git for Windows的UTF-8修补程序现已合并到“
    devel
    ”。
    这意味着即将发布的版本将支持Unicode文件名


    2011年5月

    我相信最新的版本已经发布了。
    也在中描述

    例如:

    情况就是这样:

  • Windows上的git对文件名进行操作,并将其本质上视为字节流。 在您的例子中,流恰好是UTF8编码的文本

  • Windows上的git要求运行时创建一个文件,并将字节流传递给它

  • 由于Windows内部的所有内容都是Unicode,因此运行时会转换字节 使用当前设置的区域设置(也称为“代码页”)流到UTF16。
    也就是说,它有效地将字节流解释为CP949(韩语)编码文本。
    显然,一些UTF8字节序列是无效的CP949序列,转换失败(“无效参数”);或者,如果UTF8序列恰好是正确的CP949序列,则结果(很可能)是不同的字符

  • 但真正的解决方案应该是MingW:

    我突然想到一个解决方案是:在GCC C运行时解决它 库级别。
    也就是说,对于Windows上的mingw GCC运行时库,可以通过构建时选项使命令行参数(传递到
    main()
    )和文件I/O函数使用底层Windows Unicode API调用,并在使用字节字符串的C标准函数API中转换为UTF-8编码。
    这可能对git“管用”,对运行Windows环境的其他Linux源代码开放项目也很有用

    不适合此修复程序的注释:

    “MinGW编译器提供对Microsoft C运行时和某些特定语言运行时功能的访问。
    MinGW是一个极简主义者,不会也永远不会尝试为MS Windows上的POSIX应用程序部署提供POSIX运行时环境。
    如果您想在这个平台上部署POSIX应用程序,请考虑CygWin。
    有一些工作正在进行中。

    因此,在此期间,是否是XOR(Windows,git)和文件名中的重音符号?注意:这些问题已在Cygwin 1.7中得到解决,因此Cygwin git:它在UTF-8(或任何其他选定字符集)和Windows的UTF-16文件名编码之间正确转换。@ak2:true,但是msysgit不是基于cygwin的@Benjol:路径和文件名暂时不应该有任何特殊字符。@ak2,@VonC,所以如果我理解正确的话,这不是git+windows的问题,特别是msysgit+windows的问题?@VonC:来自:“MinGW编译器提供对Microsoft C运行时和某些特定语言运行时功能的访问。MinGW是一个极简主义者,不会也永远不会尝试为MS Windows上的POSIX应用程序部署提供POSIX运行时环境。如果您想在这个平台上部署POSIX应用程序,请考虑CygWin。“UTF-8是MysGIT的Cuffin。请参阅我的更新答案。
    git config [--global] core.quotepath off
    git config [--global] i18n.logoutputencoding utf8
    git config [--global] i18n.commitencoding utf8
    git config [--global] --unset svn.pathnameencoding