吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 541|回复: 9
收起左侧

[已解决] PHP返回结果无法正常显示中文

[复制链接]
hdxzd12 发表于 2024-7-13 12:38
本帖最后由 20230713G001133 于 2024-7-13 15:32 编辑

现在有一个叫做(execute_command.php)的文件
[PHP] 纯文本查看 复制代码
<?php
header('Content-Type: text/html; charset=utf-8');

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $command = $_POST['command'];
    $output = shell_exec($command);
    $output = htmlspecialchars($output, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); // 转义特殊字符并保持 UTF-8 编码
    $output = nl2br($output); // 保持换行格式
    echo $output;
} else {
    echo "Error: Method not allowed";
}
?>

通过一个HTML发送Post请求(代码如下)
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>执行命令示例</title>
<style>
#output {
    font-family: SimSun, '宋体', Arial, sans-serif; /* 设置字体为宋体,如果系统不支持宋体,则使用Arial或sans-serif作为备选字体 */
}
</style>
</head>
<body>
<button id="lsCommand">查看目录列表</button>
<button id="ipconfigCommand">查看IP配置</button>
<button id="hostnameCommand">查看主机名</button>
<button id="shutdown">关闭服务器</button>
<button id="restart">重启服务器</button>
<button id="tasklist">进程列表</button>
<div id="output"></div>
<style>
#output {
    font-family: SimSun, '宋体', Arial, sans-serif; /* 设置字体为宋体,如果系统不支持宋体,则使用Arial或sans-serif作为备选字体 */
    white-space: pre; /* 保留换行符和空格 */
    overflow-x: auto; /* 显示水平滚动条 */
    max-width: 100%; /* 限制最大宽度,防止内容过宽 */
    padding: 10px; /* 添加一些内边距,使内容与边框有一定间距 */
    border: 1px solid #ccc; /* 添加边框 */
}
</style>

<script>
// 点击按钮执行命令的函数
function executeCommand(command) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'execute_command.php', true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xhr.onload = function() {
        if (xhr.status === 200) {
            document.getElementById('output').innerHTML = xhr.responseText;
        } else {
            document.getElementById('output').innerHTML = 'Error: ' + xhr.status;
        }
    };
    xhr.send('command=' + encodeURIComponent(command));
}

// 给每个按钮添加点击事件处理
document.getElementById('lsCommand').addEventListener('click', function() {
    executeCommand('dir'); // Windows下查看目录列表的命令是 dir
});

document.getElementById('ipconfigCommand').addEventListener('click', function() {
    executeCommand('ipconfig'); // Windows下查看IP配置的命令是 ipconfig
});

document.getElementById('hostnameCommand').addEventListener('click', function() {
    executeCommand('hostname'); // Windows下查看主机名的命令是 hostname
});

document.getElementById('shutdown').addEventListener('click', function() {
    executeCommand('shutdown /s /t 0'); 
});

document.getElementById('restart').addEventListener('click', function() {
    executeCommand('shutdown /r /t 0'); 
});
document.getElementById('tasklist').addEventListener('click', function() {
    executeCommand('tasklist'); 
});

</script>

</body>
</html>

返回结果中文部分无法正常显示
这种情况可能是什么原因造成的
应该怎么解决
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yuqic987 发表于 2024-7-13 15:14
修改execute_command.php

[PHP] 纯文本查看 复制代码
<?php
header('Content-Type: text/html; charset=utf-8');

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    setlocale(LC_ALL, 'zh_CN.UTF-8');
    putenv('LANG=zh_CN.UTF-8');

    $command = $_POST['command'];
    $output = shell_exec($command);

    // 使用 iconv 转换编码
    $output = iconv('GBK', 'UTF-8//IGNORE', $output); 

    $output = htmlspecialchars($output, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); 
    $output = nl2br($output); 
    echo $output;
} else {
    echo "错误:方法不允许";
}
?>

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
liyitong + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hdxzd12 + 1 + 1 谢谢@Thanks!

查看全部评分

VanYun 发表于 2024-7-13 12:53
[PHP] 纯文本查看 复制代码
    // 将 GBK 编码转换为 UTF-8 编码
    $output = mb_convert_encoding($output, 'UTF-8', 'GBK');

    // 转义特殊字符并保持 UTF-8 编码
    $output = htmlspecialchars($output, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
liyitong + 1 + 1 我很赞同!

查看全部评分

快乐小风 发表于 2024-7-13 13:03
 楼主| hdxzd12 发表于 2024-7-13 13:27
VanYun 发表于 2024-7-13 12:53
[mw_shl_code=php,true]    // 将 GBK 编码转换为 UTF-8 编码
    $output = mb_convert_encoding($output ...

3如果这样修改输出就会变成这样
image.png
1045837055lucy 发表于 2024-7-13 14:06
看看数据库的编码格式
 楼主| hdxzd12 发表于 2024-7-13 14:44
1045837055lucy 发表于 2024-7-13 14:06
看看数据库的编码格式

这个不需要数据库的
头像被屏蔽
366697846 发表于 2024-7-13 16:29
提示: 该帖被管理员或版主屏蔽
StockGeek 发表于 2024-7-13 19:11
很明显就是编码问题,转换一下~您用360浏览器切换编码看看是否正常,如果正常。确定编码问题,就是您编码转换时候有问题
qery7icgq 发表于 2024-7-13 21:00
浏览器编码问题?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 17:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表