回答編集履歴

3

誤字の修正

2017/09/06 18:30

投稿

退会済みユーザー
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Unicodeの第1面のはじめのコードポイントからpythonが扱える最大のコードポイントまでを、
10
10
 
11
- 第0面の代替文字U+FFFDのコードポイントにすべてマッピングしたdict
11
+ 第0面の代替文字`U+FFFD`のコードポイントにすべてマッピングしたdict
12
12
 
13
13
 
14
14
 
@@ -36,9 +36,9 @@
36
36
 
37
37
 
38
38
 
39
- ところで、質問文中のエラーメッセージには`USC-2`というエンコーディング方式[^1]がでてきますが、UCS-2はBMPしか扱えません。
39
+ ところで、質問文中のエラーメッセージには`UCS-2`というエンコーディング方式[^1]がでてきますが、`UCS-2`はBMPしか扱えません。
40
40
 
41
- つまり、今回のエラーは、第1面以降に属するUnicodeを、第0面しか扱えないUCS-2で処理しようとしたから発生したと考えられます。
41
+ つまり、今回のエラーは、第1面以降に属するUnicodeを、第0面しか扱えない`UCS-2`で処理しようとしたから発生したと考えられます。
42
42
 
43
43
 
44
44
 
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- [提示されたリンク先](https://stackoverflow.com/questions/32442608/ucs-2-codec-cant-encode-characters-in-position-1050-1050)の回答者であるMartijn Pietersさんは、
53
+ [提示されたリンク先](https://stackoverflow.com/questions/32442608/`UCS-2`-codec-cant-encode-characters-in-position-1050-1050)の回答者であるMartijn Pietersさんは、
54
54
 
55
55
  エラー元の文字列(Unicode)に対して第一面以降に属するUnicodeを、
56
56
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  Pythonで扱える以上のUnicodeは変換対象とする意味はないので、変換範囲は第1面の最初のUnicodeのコードポイントから
60
60
 
61
- Pythonで扱える最大のUnicodeのコードポイント(`sys,maxunicode`で得られる)に限定しています。
61
+ Pythonで扱える最大のUnicodeのコードポイント(`sys.maxunicode`で得られる)に限定しています。
62
62
 
63
63
 
64
64
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  この関数は `{'変換対象のUnicodeのコードポイント':'変換先のUnicodeのコードポイント'}`となる`dict`を引数に渡して使用するもので、
68
68
 
69
- 例えば、第1面に属するU+1F44Dを代替文字U+FFFDに変換するには、
69
+ 例えば、第1面に属する`U+1F44D`を代替文字`U+FFFD`に変換するには、
70
70
 
71
71
 
72
72
 
@@ -112,9 +112,9 @@
112
112
 
113
113
 
114
114
 
115
- UCS-2が扱えないUnicode(すなわちBMP以外のUnicode)のコードポイントを
115
+ `UCS-2`が扱えないUnicode(すなわちBMP以外のUnicode)のコードポイントを
116
116
 
117
- UCS-2でも扱えるUnicode(今回は代替文字U+FFFD)のコードポイントに置き換えるための`dict`
117
+ `UCS-2`でも扱えるUnicode(今回は代替文字`U+FFFD`)のコードポイントに置き換えるための`dict`
118
118
 
119
119
 
120
120
 
@@ -124,6 +124,6 @@
124
124
 
125
125
 
126
126
 
127
- [^1]: UCS-2は符号化文字集合の一種としての定義もありますが、符号化方式の名称としても用いられるようです。
127
+ [^1]: `UCS-2`は符号化文字集合の一種としての定義もありますが、符号化方式の名称としても用いられるようです。
128
128
 
129
129
  [^2]: コードポイントとはUnicodeひとつひとつに振られている番号のことです。

2

誤記の訂正

2017/09/06 18:30

投稿

退会済みユーザー
test CHANGED
@@ -1,59 +1,3 @@
1
- 1. 問題の所在
2
-
3
-
4
-
5
- `print()`は何をする関数なのか?
6
-
7
- => 与えられた文字列を、適切な形にエンコードしてターミナルに書き込む/stdoutに書き込む
8
-
9
-
10
-
11
- `print()`で`UnicodeEncodeError`が発生したということは、書き込む直前に失敗したということ
12
-
13
-
14
-
15
- なぜ失敗したかというと、与えられた文字列の中にUCS-2で扱える文字集合の範囲を超えるUnicodeが入っていたから。
16
-
17
- つまりUCS-2はUnicodeの中でも、BMPと呼ばれる第0面(plain)しか扱えず、与えられた文字列の中には第1面以降に存在するUnicode
18
-
19
- が入っていたため、エンコードできなかったと考えられる。
20
-
21
-
22
-
23
- では、どうすればよいか。
24
-
25
-
26
-
27
- Stackoverflowでの回答者は、第一面以降のUnicodeを第0面に存在する代用文字で置き換えることによって
28
-
29
- この問題を回避している。
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
- 修正がやや不十分です。
42
-
43
- 質問文からだけでは前半のコード例とprint関数との関係を読み取ることができません。
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
1
  > ただdict型non_bmp_mapが何者なのかいまいちわかっていないので、もし出来れば教えていただきたいです。m(_ _)m
58
2
 
59
3
 

1

誤記の訂正

2017/09/04 07:32

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,59 @@
1
+ 1. 問題の所在
2
+
3
+
4
+
5
+ `print()`は何をする関数なのか?
6
+
7
+ => 与えられた文字列を、適切な形にエンコードしてターミナルに書き込む/stdoutに書き込む
8
+
9
+
10
+
11
+ `print()`で`UnicodeEncodeError`が発生したということは、書き込む直前に失敗したということ
12
+
13
+
14
+
15
+ なぜ失敗したかというと、与えられた文字列の中にUCS-2で扱える文字集合の範囲を超えるUnicodeが入っていたから。
16
+
17
+ つまりUCS-2はUnicodeの中でも、BMPと呼ばれる第0面(plain)しか扱えず、与えられた文字列の中には第1面以降に存在するUnicode
18
+
19
+ が入っていたため、エンコードできなかったと考えられる。
20
+
21
+
22
+
23
+ では、どうすればよいか。
24
+
25
+
26
+
27
+ Stackoverflowでの回答者は、第一面以降のUnicodeを第0面に存在する代用文字で置き換えることによって
28
+
29
+ この問題を回避している。
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+ 修正がやや不十分です。
42
+
43
+ 質問文からだけでは前半のコード例とprint関数との関係を読み取ることができません。
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
1
57
  > ただdict型non_bmp_mapが何者なのかいまいちわかっていないので、もし出来れば教えていただきたいです。m(_ _)m
2
58
 
3
59
 
@@ -36,7 +92,7 @@
36
92
 
37
93
 
38
94
 
39
- ところで、Unicode表し方としてはUCS-2とUCS-4とありますが、UCS-2はBMPしか扱えません。
95
+ ところで、質問文中エラーメッセージに`USC-2`いうエンコーディング方式[^1]でてきますが、UCS-2はBMPしか扱えません。
40
96
 
41
97
  つまり、今回のエラーは、第1面以降に属するUnicodeを、第0面しか扱えないUCS-2で処理しようとしたから発生したと考えられます。
42
98
 
@@ -62,7 +118,7 @@
62
118
 
63
119
 
64
120
 
65
- またこうした変換を実際に行うため、Martijn Pietersさんはコードポイント[^1]を文字列置換に利用する`translate`関数を使っています。
121
+ またこうした変換を実際に行うため、Martijn Pietersさんはコードポイント[^2]を文字列置換に利用する`translate`関数を使っています。
66
122
 
67
123
  この関数は `{'変換対象のUnicodeのコードポイント':'変換先のUnicodeのコードポイント'}`となる`dict`を引数に渡して使用するもので、
68
124
 
@@ -124,4 +180,6 @@
124
180
 
125
181
 
126
182
 
183
+ [^1]: UCS-2は符号化文字集合の一種としての定義もありますが、符号化方式の名称としても用いられるようです。
184
+
127
- [^1]: コードポイントとはUnicodeひとつひとつに振られている番号のことです。
185
+ [^2]: コードポイントとはUnicodeひとつひとつに振られている番号のことです。