从php启动python3脚本:字符串编码系统问题

时间:2018-12-23 14:41:17

标签: php python-3.x raspberry-pi

我想从php脚本启动一个python3脚本,其任务是读取文件。

  • php代码如下:

    $command = "python3 ./toto.py" ;
    $r = shell_exec($command);
    
  • python3脚本toto.py看起来像这样:

    myfile = open('/tmp/file_to_play.txt', 'r')
    print(myfile.readline())
    
  • 要读取的文本文件是utf-8编码文件(请注意其中包含“é”):

    déclin_abeilles.mkv
    

当我直接从外壳启动python3脚本时,它可以正常工作。 但是,当它通过php脚本执行时,在读取文本文件时出现编码系统错误:

Traceback (most recent call last):
  File "./toto.py", line 8, in <module>
    print(myfile.readline())
  File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 32: ordinal not in range(128)

有人可以向我解释我所缺少的吗?

注意:一切都在具有“ Raspbian GNU / Linux 8(jessie)”和默认软件包的树莓3服务器上运行

注2:php代码包含header('Content-type: text/html; charset=UTF-8');

1 个答案:

答案 0 :(得分:-1)

据我所知,某些特殊字符会弄乱程序。尝试将您的“é”替换为“ e”。看看是否有帮助