我跑這個表達式在GIT BASH(我是在Windows機器上,我已經安裝了GIT)奇怪的字符。運行在GIT猛砸正則表達式,我的文件現在有它
perl -pe 's/\[(?:xx_)?([^]]+)\]/\[\u$1\]/g'
該文件現在看起來好像是用中文書寫的(它是一個.sql模式文件)。
例如:
嵛 嬀] IDENTITY(1,1) NOT NULL,
有一些編碼問題,怎麼回事?
我跑這個表達式在GIT BASH(我是在Windows機器上,我已經安裝了GIT)奇怪的字符。運行在GIT猛砸正則表達式,我的文件現在有它
perl -pe 's/\[(?:xx_)?([^]]+)\]/\[\u$1\]/g'
該文件現在看起來好像是用中文書寫的(它是一個.sql模式文件)。
例如:
嵛 嬀] IDENTITY(1,1) NOT NULL,
有一些編碼問題,怎麼回事?
是不是類似於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,看看您是否仍然有編碼問題?