現在、PHPからPythonに渡した日本語の引数が引き起こす(と考えられる)エラーで悩んでいます。
さきほど別の質問で、loggingの仕方を教えてもらい、変数の中身を見ることができました。
1)phpから、Python3ファイルを起動。起動時に、引数で、日本語・英語交じりのテキストを渡している
2)Python側で、引数を受け取って、それを処理しようとすると、下記エラーが出る
なお、引数が半角アルファベットだとエラーは発生しない
・渡している引数:
"SafariとEdgeの開発版、Service Workerがデフォルトで利用可能に"
type関数で見ると、class str型になる
localeの情報は
utf-8
ANSI_3.4-1968 (←過去ログにこれがあやしいような投稿があったのですが理解できませんでした)
・そのまま処理したいのだけど、下記の文字列になってしまっている(logginで出力)
'Safari\udce3\udc81\udca8Edge\udce3\udc81\udcae\udce9\udc96\udc8b\udce7\udc99\udcba\udce7\udc89\udc88\udce3\udc80\udc81Service Worker\udce3\udc81\udc8c\udce3\udc83\udc87\udce3\udc83\udc95\udce3\udc82\udca9\udce3\udc83\udcab\udce3\udc83\udc88\udce3\udc81\udca7\udce5\udc88\udca9\udce7\udc94\udca8\udce5\udc8f\udcaf\udce8\udc83\udcbd\udce3\udc81\udcab'
・そのまま処理を続けようとすると下記が出ます:
'ascii' codec can't encode characters
環境:
ubuntu16 LTS
Python3
私の理解では、UTF-8で受け取っているのだけど、何らかの理由でpythonがASCIIでエンコードしようとしている。
2週間ほど、encode、decodeなど試してみたのですが、解決できませんでした。
どうすれば、解決できますでしょうか。
よろしくお願いします。
追記:
ミニマムな処理コードは、下記の通りです。
<PHPファイル>
$myStr_PHP_to_Python ='/usr/bin/python3 /var/www/html/readDoneUndone.py ' . '"SafariとEdgeの開発版、Service Workerがデフォルトで利用可能に"'
exec($myStr_PHP_to_Python);
<Pythonファイル>・・・readDoneUndone.py
import sys
import sys, codecs #may not necessary
myArgv = sys.argv[1]
#このmyArgvをlogginで書き出すと、下記の文字列になってしまいます。
'Safari\udce3\udc81\udca8Edge\udce3\udc81\udcae\udce9\udc96\udc8b\udce7\udc99\udcba\udce7\udc89\udc88\udce3\udc80\udc81Service Worker\udce3\udc81\udc8c\udce3\udc83\udc87\udce3\udc83\udc95\udce3\udc82\udca9\udce3\udc83\udcab\udce3\udc83\udc88\udce3\udc81\udca7\udce5\udc88\udca9\udce7\udc94\udca8\udce5\udc8f\udcaf\udce8\udc83\udcbd\udce3\udc81\udcab'
回答2件
あなたの回答
tips
プレビュー