回答編集履歴
1
修正
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## エラーの原因
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
```python
|
2
6
|
|
3
7
|
|
@@ -19,3 +23,41 @@
|
|
19
23
|
`finally` は `try` 内で例外が発生しても、しなくても呼ばれます。
|
20
24
|
|
21
25
|
`result.decode('cp932')` で例外が発生すると、`henkan = result.decode('cp932')` で `henkan` が定義される前に `finally` 内に移行するため、`henkan` が定義されていないとエラーになります。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
## 質問の内容について
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
Python では、デコードした際にエラーが起こるような状況 (ようは文字化け) では例外が発生します。それを無視して、無理やりデコードするには、`errors="ignore"` 引数を `decode()` に追加する必要があります。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
```python
|
38
|
+
|
39
|
+
text = "テスト"
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
s = text.encode("utf-8")
|
44
|
+
|
45
|
+
s = s.decode("cp932", errors="ignore")
|
46
|
+
|
47
|
+
print(s) # 繝繧ケ繝
|
48
|
+
|
49
|
+
```
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
なので、たぶん以下のようにすれば意図通りに動くと思います。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
```diff
|
58
|
+
|
59
|
+
- result.decode('cp932')
|
60
|
+
|
61
|
+
+ result.decode('cp932', errors="ignore")
|
62
|
+
|
63
|
+
```
|