프로그래밍/Php

php exec 사용하여 파이썬 호출후 한글이 안나올때

소행성왕자 2021. 10. 26. 11:30

제목 그대로 아래와 같이 php 에서 파이썬 파일을 호출한다.

<?php

$fullPath = '/home/asdf/www/data/example.jpeg';
exec("python3 /home/asdf/easyOCR-binary-centos-main/tests/php_client.py $fullPath 2>&1", $output);

print_r($output);

?>

하지만 아래와 같은 오류가 계속 발생

Traceback (most recent call last): File "/home/naya/easyOCR-binary-centos-main/tests/php_client.py", line 38, in print(result) UnicodeEncodeError: 'ascii' codec can't encode characters in position 60-62: ordinal not in range(128)

해결

사용할 인코딩을 파이썬에게 알려랴 한다.

일반적으로 터미널 로케일에서 가져오지만 exec 사용시 로케일이 없고 기본 인코딩 ansi 사용되어 

PYTHONIOENCODING=utf-8 환경변수를 설정한다.

<?php

$fullPath = '/home/asdf/www/data/example.jpeg';
exec("PYTHONIOENCODING=utf-8 python3 /home/asdf/easyOCR-binary-centos-main/tests/php_client.py $fullPath 2>&1", $output);

print_r($output);

?>

https://stackoverflow.com/questions/40931197/using-utf-8-for-php-system-call-to-pytho

 

Using UTF-8 for PHP System call to Python

A system call exists in PHP such that system("python3 returnUTF8.py") If I run the Python script on the Linux command line - it works fine, however when I use the PHP system command I get an error "

stackoverflow.com