回答編集履歴

2

情報を追加

2017/11/29 18:15

投稿

toris-birds
toris-birds

スコア122

test CHANGED
@@ -37,3 +37,43 @@
37
37
 
38
38
 
39
39
  参考になれば。
40
+
41
+
42
+
43
+ ---
44
+
45
+ 追記:
46
+
47
+ BOM (バイトオーダーマーク)というのは、エンコーディングなどを示すためにファイル先頭に付けるマークで、その並び順でLE (リトルエンディアン)か、BE (ビッグエンディアン)かの判定にも使われます。
48
+
49
+
50
+
51
+ 問題は、BOMが付いていない場合で、この場合はファイルの先頭付近の内容から、エンコーディングが推測されます。
52
+
53
+ 大雑把に分類すると、
54
+
55
+ 英字が1バイト:ASCII、shift-jis、utf-8など
56
+
57
+ 英字が2バイト:utf-16など
58
+
59
+ ※utf-16などの場合、バイナリエディタなどで見ると、アルファベットの間に0x00が挟まっているかと思います。
60
+
61
+
62
+
63
+ 0x00~0x7fしか存在しない:ASCII (または shift-jis)
64
+
65
+ 0x81など、0x00~0x7f以外の値が含まれる:shift-jis、utf-8など
66
+
67
+ ※shift-jisの場合は、日本語を2バイトで表す場合の1バイト目など
68
+
69
+ 詳細は文字コード表を参考にするとよいかと思います。
70
+
71
+
72
+
73
+ 参考:
74
+
75
+ UCS-2 および UCS-2 とユニコードの関係 https://www.ibm.com/support/knowledgecenter/ja/ssw_i5_54/nls/rbagsucs2.htm
76
+
77
+
78
+
79
+ Unicode対応 文字コード表 (と解説) http://ash.jp/code/unitbl21.htm

1

書式の改善など

2017/11/29 18:15

投稿

toris-birds
toris-birds

スコア122

test CHANGED
@@ -1,16 +1,10 @@
1
- 質問にテキストファイルのエンコーディングの情報やテキストのサンプル書かれていないので、エラーに表示された内容から推測すがBom無しのutf8で書かたファイルかと思います。
1
+ テキストエディタで開いた際、多く場合、エンコーディングが表示されので、を参考にするとよいかと思います。(エンコーディングの扱いに慣れている場合は、バイナリエディタで見た方が原因がはっきり分かりますが・・)
2
+
3
+ ※BOM無しの場合は、ファイルの先頭付近に日本語などが含まれていない場合、ASCII、Shift-JIS、Utf-8等の判定材料が無いので、エンコーディングの判定で失敗する場合もあります。
2
4
 
3
5
 
4
6
 
5
- バイナリエディタで開くと、先頭部分はこんな感じになっているかと思います。
6
-
7
- ![ファイルイメージ](1f8edb9b273d1c3d3cc098dec7b134ce.png)
8
-
9
-
10
-
11
-
12
-
13
- 従って、ファイルを開く`f_in = open(filelistname, 'r')`の段階でエンコードに配慮する必要があるかと思います。
7
+ 今回の質問の場合、ファイルを開く`f_in = open(filelistname, 'r')`の段階でエンコードに配慮する必要があるかと思います。
14
8
 
15
9
 
16
10
 
@@ -22,7 +16,7 @@
22
16
 
23
17
 
24
18
 
25
- 例:
19
+ 例: utf-8の場合
26
20
 
27
21
  `f_in = codecs.open(filelistname, 'r', encoding='utf-8')`
28
22