原因:Windows环境的默认编码为GBK,我们写的代码一般为UTF-8 ,所以你代码里输出的中文就会乱码
解决办法:一种是代码里使用iconv()函数讲要输出的内容转一下; 另一种是在控制台先执行 chcp 65001 将控制台输出的编码改为utf-8 (65001 为utf-8的编码的值)【推荐使用第二种方法,不用改代码】
一、使用iconv()函数转换内容的编码
1、控制台console/controller 目录下新建一个控制器TestController继承yii\console\Controller,写一个测试方法:
public function actionTest(){
//windows本地会乱码(windows默认编码是GBK),使用iconv('utf-8','gbk//IGNORE',$str)转码
$str = 'Yii控制台程序运行测试';
if(PATH_SEPARATOR==';'){ //PATH_SEPARATOR 系统常量,windows下为';',linux下为':'
$str = iconv('utf-8','gbk//IGNORE',$str); //windows环境下需要转码
}
echo $str.PHP_EOL;
echo 'END~';
}
2、DOS命令行进入到项目的console目录下 运行程序
D:\lindong\www\项目根目录\console>D:\lindong\www\项目根目录\yii test/test
Yii控制台程序运行测试
END~
D:\lindong\www\项目根目录\console>
二、直接更改控制台的编码格式
1、先执行 chcp 65001 将控制台的编码格式改成utf-8
2、再执行要执行的脚本