Skip to main content
 首页 » 编程设计

php之统一码编码错误 : 'ascii' codec can't encode characters in position 360-362: ordinal not in range(128)

2024年10月01日28lhb25

我尝试通过 PHP 运行 python 我一直在获取

UnicodeEncodeError: 'ascii' codec can't encode characters in position 360-362: ordinal not in range(128)

我试过了

php

$command = "python ".public_path().'/python/start_clientsim.py 2>&1'; 
$result = exec($command); 

python (start_clientsim.py)

import paramiko 
import time 
import sys 
import os 
import pdb 
 
# Note 
# sudo pip install --user paramiko 
 
 
ip = "172.1.1.1" 
un = "root" 
pw = "123" 
key_filename='/Users/keys/id_rsa' 
 
def ssh_con (ip, un, pw): 
    global ssh 
    ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(ip, username=un, password=pw, key_filename=key_filename) 
 
def cmd_io (command): 
    global ssh_cmd 
    ssh_cmd.send("%s \n" %command) 
    time.sleep(1) 
    output = ssh_cmd.recv(10000).decode("utf-8") 
    print (output) 
 
 
ssh_con(ip,un,pw) 
ssh_cmd = ssh.invoke_shell() 
 
cmd_io("clientsim cli") 
cmd_io("start subscriber-group dth-sub start-traffic udp") 
cmd_io("exit") 

请您参考如下方法:

尝试运行

putenv("PYTHONIOENCODING=utf-8");

在从 PHP 执行 shell 命令之前。参见 https://stackoverflow.com/a/7363085/197921了解详情。