在GIT Bash中运行正则表达式,我的文件现在有了有趣的字符

时间:2009-11-26 20:20:10

标签: c# regex encoding

我在GIT BASH中运行了这个正则表达式(我在Windows机器上,我安装了GIT)。

perl -pe 's/\[(?:xx_)?([^]]+)\]/\[\u$1\]/g'

现在该文件看起来好像是用中文编写的(它是.sql模式文件)。

示例:

嵛 嬀] IDENTITY(1,1) NOT NULL,

是否存在编码问题?

1 个答案:

答案 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并查看是否仍存在编码问题?