回答編集履歴

3

PHPでの環境変数の設定方法、コードを追加

2020/04/26 17:09

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -27,6 +27,14 @@
27
27
 
28
28
 
29
29
  方法1: PHP側で環境変数 PYTHONIOENCODING に "utf-8" を設定。
30
+
31
+
32
+
33
+ ```php
34
+
35
+ putenv("PYTHONIOENCODING=utf-8");
36
+
37
+ ```
30
38
 
31
39
 
32
40
 

2

PHP側での設定方法について補足

2020/04/26 17:09

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -22,7 +22,19 @@
22
22
 
23
23
  ----
24
24
 
25
- 追記: Pythonでの対応方法
25
+ 追記: PHP/Pythonでの対応方法
26
+
27
+
28
+
29
+ 方法1: PHP側で環境変数 PYTHONIOENCODING に "utf-8" を設定。
30
+
31
+
32
+
33
+ 方法2: Pythonスクリプト内で対応。
34
+
35
+
36
+
37
+ これは、PYTHONIOENCODINGを設定するのと同等の効果なので、どちらか片方のみで構いません。
26
38
 
27
39
 
28
40
 

1

pythonスクリプト側での対応方法

2020/04/26 17:03

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -17,3 +17,51 @@
17
17
  `PYTHONIOENCODING` がPythonでの標準出力のエンコーディングを決定します。
18
18
 
19
19
  - [Pythonマニュアルより コマンドラインと環境](https://docs.python.org/ja/3.8/using/cmdline.html)
20
+
21
+
22
+
23
+ ----
24
+
25
+ 追記: Pythonでの対応方法
26
+
27
+
28
+
29
+ 標準出力が規定のエンコーディングに変換されるので、
30
+
31
+ 環境によってはこれを合わせる必要があります。
32
+
33
+
34
+
35
+ (但し、追加で提示されたエラーとの関連はわからないので、
36
+
37
+ まずは日本語が正しく表示できるかどうかを確かめてください)
38
+
39
+
40
+
41
+ ```python
42
+
43
+ import io
44
+
45
+ import sys
46
+
47
+ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
48
+
49
+ ```
50
+
51
+
52
+
53
+ python3.7 以降での対応方法
54
+
55
+ ```
56
+
57
+ import sys
58
+
59
+ sys.stdout.reconfigure(encoding='utf-8')
60
+
61
+ ```
62
+
63
+
64
+
65
+ お使いのPythonのバージョンに合わせて、どちらかスクリプトの先頭の方に記述します。
66
+
67
+ (バージョン依存を避けたい場合は上の方)