我在GIT BASH中运行了这个正则表达式(我在Windows机器上,我安装了GIT)。
perl -pe 's/\[(?:xx_)?([^]]+)\]/\[\u$1\]/g'
现在该文件看起来好像是用中文编写的(它是.sql模式文件)。
示例:
嵛 嬀] IDENTITY(1,1) NOT NULL,
是否存在编码问题?
答案 0 :(得分:2)
与issue 358不相似吗?
Windows命令行和GUI程序默认使用不同的代码页 对于历史DOS兼容性,命令行(“OEM”)codepage is 437,而 GUI(“ANSI”)codepage is 1252。请参阅interesting reading here。
控制台使用OEM代码页(我的系统上为437),而GUI使用ANSI代码页(我的系统上为1252)。
从控制台启动程序时,cmd.exe
通常不会修改 该程序的参数,除非该程序恰好是.bat
或.cmd
文件 哪个案例cmd.exe
会对参数执行代码页转换(请参阅“Codepage Conversions”) 所以git.exe
已经在1252编码中收到“Daniël”,即 使用记事本查看.git/config
的原因看起来很好 但是,当读取user.name时,不会进行代码页转换,并且1252编码中的“Daniël”将打印到控制台,从而在我的系统上生成“Daniδl”。
显然,使用MSYS / Git Bash
时情况有所不同。总而言之,从
cmd.exe
(通过.cmd
包装器)运行Git时的解决方案 似乎是:1)将控制台字体从光栅字体更改为True Type字体,
2)通过“chcp
”更改控制台代码页以匹配Windows代码页(无论如何 可能是)。
简而言之,即将推出修复程序:您是否可以尝试beta Git installer并查看是否仍存在编码问题?