在PHP5.6時代直接執行 php
php.exe 文件.php windows
是沒有的這個問題編碼
在win下的命令行中 活動代碼頁命令.net
chcp 命令行
修改utf-8
chcp 936 //gbkget
chcp 65001 //utf-8it
可是在php 7.1下 執行php.exe 首先會修改命令行的 活動代碼頁變量
這是一個自動行爲 程序會自帶一個 chcp 65001 而後你的php文件亂碼
做爲參數傳遞的時候 若是有中文字符 那麼抱歉程序內部亂碼了就
找不到文件了關於這個問題 在百度搜幾乎無解 因而在php官網的
bug反饋裏面翻到這麼一頁
https://bugs.php.net/bug.php?id=73716&edit=2
大概在[2016-12-12 21:30 UTC] ab@php.net
解決方案:
打開php.ini 搜索 internal_encoding而後改成 internal_encoding = "cp936"
default_charset="UTF-8" 這一項應該是默認的 若是沒有就加上
這樣就對應了簡體中文的windows環境 不過這個方案的缺點就是寫的很死
若是把PHP打包發佈的話 大概是隻能在簡中的系統下執行
改了這個之後,PHP文件仍是用UTF-8編碼來寫
不過輸入路徑做爲參數 也就是argv變量裏面的內容 記得轉碼成UTF-8