首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git gui -可以让它显示UTF16吗?

git gui -可以让它显示UTF16吗?
EN

Stack Overflow用户
提问于 2010-10-12 21:15:51
回答 3查看 2K关注 0票数 3

有没有办法让git gui以某种方式显示和显示UTF16文件的差异?

我找到了some information,但这主要是指命令行,而不是gui。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-30 03:07:23

在msysGit人员的帮助下,我一直致力于一个更好的解决方案,并提出了这个干净/污迹过滤器。筛选器使用Gnu file和iconv命令来确定文件的类型,并将其转换为msysGit的内部UTF-8格式,或将其转换为msysGit的内部UTF-8格式。

这种类型的清理/涂抹过滤器为您提供了更多的灵活性。它应该允许Git在大多数情况下将混合格式的文件作为UTF-8文本处理: diffs、merge、git-grep,以及像eol-conversion、ident-replacement和内置的diff模式这样的gitattribute属性。

上面概述的diff过滤器解决方案仅适用于diffs,因此受到更多限制。

要设置此筛选器:

  1. 获取Gnu libiconvfile,并安装这两个文件。
  2. 确保GnuWin32\bin目录(通常为"C:\Program Files\GnuWin32\bin")位于%PATH%Git
  3. 将以下内容添加到~\Git\etc\gitconfig:

filter "mixedtext“clean = iconv -sc -f $(文件-b --mime-编码%f) -t utf-8 -sc = iconv -sc -f utf-8 -t $(文件-b --mime-编码%f)所需的

  • 在全局~/Git/etc/Git属性或本地~/.git属性中添加一行以处理混合格式的文本,例如:

*.txt filter=mixedtext

我在一个包含ANSI、UTF-16和UTF-8格式的sql文件的目录上使用过它。到目前为止,它是有效的。除非有任何意外,这看起来像是20%的努力,可以解决所有Windows文本格式问题的80%。

票数 5
EN

Stack Overflow用户

发布于 2013-04-10 04:57:55

此方法适用于MSysGit 1.8.1,并在Windows XP上进行了测试。我使用的是Git扩展2.44,但由于这些更改是在Git级别上进行的,因此它们也应该适用于Git Gui。步骤:

Git

  • Install Gnu Iconv.

  • Create以下脚本,将其命名为astextutf16,并将其放置在安装的/bin目录中(这基于现有的astextplain脚本):

#!/bin/sh -e #将Windows Unicode (UTF-16 / UCS-2)转换为Git友好的UTF-8 #备注:#*需要Gnu图标:# http://gnuwin32.sourceforge.net/packages/libiconv.htm #*此脚本必须放在:~/Git/bin #*修改全局的~/Git/etc/gitconfig或本地的~/.git/config:# diff " astextutf16“# textconv =astextutf16#*或者,从命令行:#$ git config diff.astextutf16.textconv astextutf16 #*修改全局~/Git/etc/Git属性或本地~/.git属性:# *.txt diff=astextutf16 if test "$#“!= 1;然后回显"Usage: astextutf16“1>&2 exit 1 fi # -f(rom) utf-16 -t(o) utf-8 "\Program Files\GnuWin32\bin\iconv.exe”-f utf-16 -t utf-8 "$1“exit 0

  • 修改全局的~/Git/etc/gitconfig或本地的~/.git/config文件,并添加以下行:

从命令行比较astextutf16

  • Or,"astextutf16“textconv = diff:

$ git config diff.astextutf16.textconv astextutf16

  • Modify全局~/Git/etc/gitattributes或您的本地~/.gittributes文件,并映射要转换的扩展名:

*.txt diff=astextutf16

  • Test.UTF-16文件现在应该是可见的。
票数 3
EN

Stack Overflow用户

发布于 2016-02-06 11:52:42

我遇到了类似的问题。

我想改进公认的答案,因为它有一个小缺陷。我遇到的问题是,如果文件不存在,我会收到以下错误:

不支持将

转换为

我更改了命令,这样就不需要文件了。它只使用stdin/stdout。这解决了这个问题。我的.git/config文件现在如下所示:

代码语言:javascript
复制
[filter "mixedtext"]
    clean = "GITTMP=$(mktemp);TYPE=$( tee $GITTMP|file -b --mime-encoding - ); cat $GITTMP | iconv -sc -f $TYPE -t utf-8; rm -f $GITTMP"
    smudge = "GITTMP=$(mktemp);TYPE=$( tee $GITTMP|file -b --mime-encoding - ); cat $GITTMP | iconv -sc -f utf-8 -t $TYPE; rm -f $GITTMP"
    required = true

要在.git/config文件中创建条目,请使用以下命令:

代码语言:javascript
复制
git config --replace-all filter.mixedtext.clean 'GITTMP=$(mktemp);TYPE=$( tee $GITTMP|file -b --mime-encoding - ); cat $GITTMP | iconv -sc -f $TYPE -t utf-8; rm -f $GITTMP'
git config --replace-all filter.mixedtext.smudge 'GITTMP=$(mktemp);TYPE=$( tee $GITTMP|file -b --mime-encoding - ); cat $GITTMP | iconv -sc -f utf-8 -t $TYPE; rm -f $GITTMP'
git config --replace-all filter.mixedtext.required true

我的.gitattributes文件如下所示:

代码语言:javascript
复制
*.txt filter=mixedtext
*.ps1 filter=mixedtext
*.sql filter=mixedtext

仅指定可能有问题的文件,否则清理/涂抹必须执行更多工作(临时文件)。

我们还将git中的UTF-16le文件批量转换为UTF-8,因为这是最紧凑和可移植的UTF编码。在清理和涂抹中使用的相同的iconv命令对于永久转换文件来说是完美的。

清理/污点命令的好处是,即使使用UTF-16le检入了文件,diff仍然可以工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3915072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档