如何在windows git-bash中将中文文件名从gbk更改为utf-8?
How to change chinese filename from gbk to utf-8 in windows git-bash?
我发现如果我将一个带有中文字符的文件名提交给一些 git 仓库,我无法再次在 macos 中提取该仓库:
$ git pull
...
error: unable to create file ???: Illegal byte sequence
Google 告诉我应该在 Linux 上将文件名从 gbk 更改为 utf-8。但是我只有windows/macos台机器。
我可以将 git-bash 中 windows 的文件名从 gbk 更改为 utf-8 吗?谢谢!
顺便说一句,这些文件名有特殊含义,我不能简单地将这些名称更改为英文单词。我必须将这些名称保留在另一种编码中。
TL;DR
在 Windows 上的 Git Bash 中,您可以通过语法 $'31'
的八进制字节序列或语法 $'31'
的十六进制字节序列来引用文件名$'\xc3\x83'
详情
我没有可以使用 gbk 的机器设置,但我已经测试过,在 Windows、Git Bash 上,您可以通过他们的文件名来引用文件名字节序列。
部分复制:我有一个名为 é
的文件(八进制的 utf8 字节序列:31
),我想将其重命名为 ê
(八进制的 utf8 字节序列:32
).
要执行重命名操作,这对我在 Git Bash 和 Windows 上有用:
git mv $'31' $'32'
所以... 如果 您能够在 Windows 上成功检出您的 gbk 文件,您应该能够使用该技术重命名它。
为了找出表示已经在Git中的名称的八进制序列,顺便说一下,git log --stat
、git show <commit>
等,为我显示那些八进制转义序列中的文件名。不过,我不知道情况是否总是如此。 ls | od
也可能有帮助。
此外,十六进制语法也适用:$'\xc3\x83'
.
注意:这些语法不是由 Git 处理的,而是由 Bash 本身处理的,并且应该在任何 OS 上的 bash 提示符下工作。
我发现如果我将一个带有中文字符的文件名提交给一些 git 仓库,我无法再次在 macos 中提取该仓库:
$ git pull
...
error: unable to create file ???: Illegal byte sequence
Google 告诉我应该在 Linux 上将文件名从 gbk 更改为 utf-8。但是我只有windows/macos台机器。
我可以将 git-bash 中 windows 的文件名从 gbk 更改为 utf-8 吗?谢谢!
顺便说一句,这些文件名有特殊含义,我不能简单地将这些名称更改为英文单词。我必须将这些名称保留在另一种编码中。
TL;DR
在 Windows 上的 Git Bash 中,您可以通过语法 $'31'
的八进制字节序列或语法 $'31'
的十六进制字节序列来引用文件名$'\xc3\x83'
详情
我没有可以使用 gbk 的机器设置,但我已经测试过,在 Windows、Git Bash 上,您可以通过他们的文件名来引用文件名字节序列。
部分复制:我有一个名为 é
的文件(八进制的 utf8 字节序列:31
),我想将其重命名为 ê
(八进制的 utf8 字节序列:32
).
要执行重命名操作,这对我在 Git Bash 和 Windows 上有用:
git mv $'31' $'32'
所以... 如果 您能够在 Windows 上成功检出您的 gbk 文件,您应该能够使用该技术重命名它。
为了找出表示已经在Git中的名称的八进制序列,顺便说一下,git log --stat
、git show <commit>
等,为我显示那些八进制转义序列中的文件名。不过,我不知道情况是否总是如此。 ls | od
也可能有帮助。
此外,十六进制语法也适用:$'\xc3\x83'
.
注意:这些语法不是由 Git 处理的,而是由 Bash 本身处理的,并且应该在任何 OS 上的 bash 提示符下工作。