账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    git for windows 使用 git bash here 执行 PHP 脚本输出中文乱码
    54
    0
    git version 2.15.0.windows.1
    PHP 7.0.12 (cli) (built: Oct 13 2016 11:04:07) ( NTS )
    <?php
        echo '我是中国人';

    以上是我的 PHP 脚本代码。文件名是 test.php 字符编码是 UTF-8 无 BOM 头的。我在 git bash 里使用 php test.php。然后输出的是乱码。输出的结果是:鎴戞槸涓浗浜

    我尝试使用 git bash 的 optionstext 选项设置成了 UTF-8 编码。然后通过 locale 命令核对无误,当然也过尝试关闭 git bash 命令窗口重新打开进行测试,但是一样显示乱码。

    以下是我通过 百度、必应 以及其他途径获取所尝试过的方法,均无效。

    git config --global gui.encoding utf-8
    chcp.com 65001
    
    vi /etc/inputrc 
    set output-meta on
    set convert-meta off

    后面我就开始思考,形成了如下具体步骤:

    • 难道是 git bash 命令窗口字符编码那里没设置对导致的?

      // 正常显示中文
      cat test.php  
      
      // 中文乱码  
      php test.php
    • 对输出结果进行分析,发现其输出的实际已经是 UTF-8 编码的字符了

      // 输出结果为:我是...
      iconv('UTF-8', 'GBK//IGNORE', '鎴戞槸涓浗浜')
    • 尝试使用 CMD 测试

       // 输出 936
      chcp
      
      // 输出乱码
      php test.php
      
      // 更改为 65001
      chcp 65001
      
      // 输出正常  
      php test.php
    • CMD 既然可以通过 chcp 65001 来改变,于是我也想通过改变 git bash 终端字符编码总可以了吧,于是有了如下命令:

      chcp.com 65001
      
      git config --global gui.encoding utf-8

    但是,均宣告无效。我该如何去解决这个问题呢?请给我一些指引,谢谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 阿尔卑斯少女 普通会员 1楼

      在 Windows 上使用 Git Bash 执行 PHP 脚本时,可能会遇到中文乱码的问题。这是因为 Git Bash 会将 PHP 脚本的输出内容编码为默认的系统编码(通常是 UTF-8),而这个编码方式在 Windows 上可能不适用于中文字符。

      解决这个问题的一种方法是使用 Git Bash 的默认编码(通常是 UTF-8)。

      首先,你需要打开 Git Bash 的命令行界面。你可以通过以下步骤来打开:

      1. 打开命令提示符。
      2. 输入 cd,然后按 Enter 键。

      接下来,你可以使用以下命令来切换到 Git Bash 的默认编码:

      set PYTHONPATH=%PYTHONPATH%;C:\Program Files (x86)\Git\bin

      然后,你可以使用以下命令来执行 PHP 脚本:

      .\path\to\your\php\script.php

      在这个命令中,\path\to\your\php\script.php 是你想要执行的 PHP 脚本的路径。

      如果 PHP 脚本的输出中包含中文字符,那么它们可能会被乱码。为了避免这个问题,你可以在 PHP 脚本中添加一些处理中文字符的代码。

      例如,你可以使用 iconv 函数来将 PHP 输出的内容转换为正确的字符编码。例如:

      php header('Content-Type: text/html; charset=utf-8'); echo iconv('UTF-8', 'gbk', $output);

      在这个例子中,gbk 是一个正确的字符编码,它代表中文字符。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部