это плагин, который я использую:
add_shortcode( '3', 'execute_python_with_argv3' );
function execute_python_with_argv3() {
$description = array (
array("pipe", "r"), // stdin
array("pipe", "w"), // stdout
);
$application_system = "python ";
$application_path .= plugin_dir_path( __FILE__ );
$application_name .= "3.py";
$separator = " ";
$application = $application_system.$application_path.$application_name.$separator;
$pipes = array();
$proc = proc_open ($application, $description, $pipes);
if (is_resource ( $proc )) {
$response = stream_get_contents ($pipes [1] ); //Reading stdout buffer
}
$final = substr(str_replace("'", "", $response), 1);
echo $final;
echo iconv('UTF-8', 'UTF-8', $final);
}
$response
равно b'\xc4\x8d\xc4\x99\xc4\x97\xc4\x8d\xc4\x8d\xc4\xaf\xc4\x85'
а также $final
эквивалентен \xc4\x8d\xc4\x99\xc4\x97\xc4\x8d\xc4\x8d\xc4\xaf\xc4\x85
и со всем этим echo iconv('UTF-8','UTF-8',$final);
следует расшифровать и распечатать čęėččįą
, Но он не декодирует, а только печатает $final
Строка, но если я вставлю строку $final
печатает на iconv
Строковое место, оно прекрасно декодирует. Почему это происходит? Как это исправить? Благодарю.
Это скрипт Python, который я использую:
# -*- coding: utf-8 -*-
line="čęėččįą";
enc=line.encode('utf-8')
print (enc);
Вам нужно установить кодировку среды по умолчанию utf-8
,
Один из способов сделать это:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
line = "čęėččįą"enc = line.encode('utf-8')
print (enc)
Других решений пока нет …