Reputation: 53
I have two code files which are "run_python.php" and "script.py".
run_python.pyp
<html>
<?php
$out = `python script.py`;
$out = iconv('cp949', 'utf-8', $out);
echo $out;
?>
</html>
script.py
import locale
import sys
print(locale.getdefaultlocale())
print(locale.getpreferredencoding())
print(sys.stdout.encoding)
When I run run_python.php, the output result on the browser is :
('ko_KR', 'cp949') cp949 cp949
When I run the script.py through the cmd("python script.py"), the output result on the cmd is :
('ko_KR', 'cp949')
cp949
utf-8
Why the encodings from sys.stdout.encoding
show those two different results?
I'm guessing that they're running on two different shells and the stdout encodings show those two different results? Is that correct? If that's right or wrong, how do you determine/verify that? It should be helpful if I could determine which shell I'm using on this testing envorinment which is Windows. I've searched for a long time, but only could I find was only on Linux.
Testing Environment:
System default locale : CP949
Console codepage : CP949
OS : Windows
Upvotes: 0
Views: 113
Reputation: 782488
When you run the Python script by itself, sys.stdout
is connected to the terminal. When it's connected to a terminal, the default encoding is determined from the LC_CTYPE
or LC_ALL
environment variables.
When you run it from PHP, sys.stdout
is connected to a pipe. In this case, it defaults to 7-bit ASCII.
Upvotes: 1