回答編集履歴
2
情報を追加
    
        answer	
    CHANGED
    
    | 
         @@ -17,4 +17,24 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
            ---
         
     | 
| 
       18 
18 
     | 
    
         
             
            linelist が既に文字化けしていると思いますので、linelistに対して`codecs.open(...)`やなどを試した場合も、結果は変わらないと思います。
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            参考になれば。
         
     | 
| 
      
 20 
     | 
    
         
            +
            参考になれば。
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ---
         
     | 
| 
      
 23 
     | 
    
         
            +
            追記:
         
     | 
| 
      
 24 
     | 
    
         
            +
            BOM (バイトオーダーマーク)というのは、エンコーディングなどを示すためにファイル先頭に付けるマークで、その並び順でLE (リトルエンディアン)か、BE (ビッグエンディアン)かの判定にも使われます。
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            問題は、BOMが付いていない場合で、この場合はファイルの先頭付近の内容から、エンコーディングが推測されます。
         
     | 
| 
      
 27 
     | 
    
         
            +
            大雑把に分類すると、
         
     | 
| 
      
 28 
     | 
    
         
            +
            英字が1バイト:ASCII、shift-jis、utf-8など
         
     | 
| 
      
 29 
     | 
    
         
            +
            英字が2バイト:utf-16など
         
     | 
| 
      
 30 
     | 
    
         
            +
            ※utf-16などの場合、バイナリエディタなどで見ると、アルファベットの間に0x00が挟まっているかと思います。
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            0x00~0x7fしか存在しない:ASCII (または shift-jis)
         
     | 
| 
      
 33 
     | 
    
         
            +
            0x81など、0x00~0x7f以外の値が含まれる:shift-jis、utf-8など
         
     | 
| 
      
 34 
     | 
    
         
            +
            ※shift-jisの場合は、日本語を2バイトで表す場合の1バイト目など
         
     | 
| 
      
 35 
     | 
    
         
            +
            詳細は文字コード表を参考にするとよいかと思います。
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            参考:
         
     | 
| 
      
 38 
     | 
    
         
            +
            UCS-2 および UCS-2 とユニコードの関係 https://www.ibm.com/support/knowledgecenter/ja/ssw_i5_54/nls/rbagsucs2.htm
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            Unicode対応 文字コード表 (と解説) http://ash.jp/code/unitbl21.htm
         
     | 
1
書式の改善など
    
        answer	
    CHANGED
    
    | 
         @@ -1,16 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            テキストエディタで開いた際、多くの場合、エンコーディングが表示されるので、それを参考にするとよいかと思います。(エンコーディングの扱いに慣れている場合は、バイナリエディタで見た方が原因がはっきり分かりますが・・)
         
     | 
| 
      
 2 
     | 
    
         
            +
            ※BOM無しの場合は、ファイルの先頭付近に日本語などが含まれていない場合、ASCII、Shift-JIS、Utf-8等の判定材料が無いので、エンコーディングの判定で失敗する場合もあります。
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            バイナリエディタで開くと、先頭部分はこんな感じになっているかと思います。
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            今回の質問の場合、ファイルを開く`f_in = open(filelistname, 'r')`の段階でエンコードに配慮する必要があるかと思います。
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            従って、ファイルを開く`f_in = open(filelistname, 'r')`の段階でエンコードに配慮する必要があるかと思います。
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
6 
     | 
    
         
             
            似たようなサンプルが、Stackoverflowなどにありますので、参考にされるとよいかと思います。
         
     | 
| 
       10 
7 
     | 
    
         
             
            [Stackoverflow - Character reading from file in Python](https://stackoverflow.com/questions/147741/character-reading-from-file-in-python)
         
     | 
| 
       11 
8 
     | 
    
         
             
            [Qiita - pythonでUTF8のテキスト処理](https://qiita.com/kanemu@github/items/1080972679c9cb70ebff)
         
     | 
| 
       12 
9 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            例:
         
     | 
| 
      
 10 
     | 
    
         
            +
            例: utf-8の場合
         
     | 
| 
       14 
11 
     | 
    
         
             
            `f_in = codecs.open(filelistname, 'r', encoding='utf-8')`
         
     | 
| 
       15 
12 
     | 
    
         
             
            (modeのデフォルトは'r'ですが、説明のために足しておきました)
         
     | 
| 
       16 
13 
     | 
    
         |