2009-11-26 50 views
1

我跑這個表達式在GIT BASH(我是在Windows機器上,我已經安裝了GIT)奇怪的字符。運行在GIT猛砸正則表達式,我的文件現在有它

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

該文件現在看起來好像是用中文書寫的(它是一個.sql模式文件)。

例如:

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

有一些編碼問題,怎麼回事?

回答

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編碼,這就是爲什麼 它看起來不錯就用記事本在看.git/config接收「丹尼爾」。
但是,在讀取user.name時,不會發生代碼頁轉換,並將1252編碼中的「Daniël」打印到控制檯,從而在我的系統上產生「Daniδl」。
顯然,使用MSYS/Git Bash時情況不同。

所以,從cmd.exe運行git時(通過.cmd包裝)綜上所述,解決 似乎是:

1)改變從光柵字體控制檯字體True Type字體,
2)通過「chcp」更改控制檯代碼頁以匹配Windows代碼頁(無論是可能的 )。


總之,修復即將到來:你可以試試這個beta Git installer,看看您是否仍然有編碼問題?