Nim 文字コードを指定したファイルの読み書き

Nimでファイルの読み書きを試しました。
Nim ファイルの読み書き

文字コードを指定してのファイルの読み書きを試してみます。

CP932



文字コードがCP932のファイルに「郵便番号データ」があります。
読み仮名データの促音・拗音を小書きで表記するもの(zip形式)

データの少ない香川県の郵便番号をダンロードしてテストに使用しました。


文字化け



まず、普通にファイルを読み込むと文字化けするか見てみます。


  1. proc main() =
  2.     let f : File = open("37KAGAWA.CSV" ,FileMode.fmRead)
  3.     defer:
  4.         close(f)
  5.     echo f.readLine
  6.     
  7. main()



想定通り文字化けします。

916_01.png



Module encodings



標準で文字コードのエンコーダーがあります。
Module encodings

こちらを使用して、文字コードをCP932からUTF-8に変換してみます。


  1. import encodings
  2. proc main() =
  3.     let enc = encodings.open("UTF-8", "CP932")
  4.     let f : File = open("37KAGAWA.CSV" ,FileMode.fmRead)
  5.     defer:
  6.         close(enc)
  7.         close(f)
  8.     echo enc.convert(f.readLine)
  9.     
  10. main()



うまく表示されました。

916_02.png



ファイルの出力



同じ要領で、CP932で文字を出力してみます。


  1. import encodings
  2. proc main() =
  3.     let enc = encodings.open("CP932", "UTF-8")
  4.     let f : File = open("cp932.txt" ,FileMode.fmWrite)
  5.     defer:
  6.         close(enc)
  7.         close(f)
  8.     f.writeLine enc.convert("香川県高松市以下に掲載がない場合")
  9.     
  10. main()



文字コードチェック


$ nkf -g cp932.txt
Shift_JIS



狙い通り、CP932で出力できたようです。
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ