Help us understand the problem. What is going on with this article?

atom でファイルの文字コードの自動判別

More than 3 years have passed since last update.

手動で文字コード判別させるのはどうも手間なので・・・

atomはファイルを開いて期待している文字コードで開かなかった場合、Ctrl+Shift+uの操作で文字コードを判別し直すことは出来るようですが、やはりサクッっと開いたときに自動判別させたいです。

やってみて、ファイルが開かれたとき、文字化けが無く期待している文字コードでファイルが開くのはこんなに気持ちいいものかと思いました。

既にされている方がおられましたので、参考にさせていただきました。
ありがとうございました。
ATOM でファイルを開いたら自動文字コード判定を行う
ファイルの文字コードの自動判別

今回の環境

以下の通りです。

Windows 7-64bit
atom-1.6.2

インストール

hogeはWindowsログインのユーザー名なので、ご自身のユーザー名に読み替えてください。

iconv-liteとjschardetというものが必要なようです。
npmでインストールするらしいので、Node.jsをインストールしておいてください。

こちらにwindowsにNode.jsをインストールする記事がありました。
Node.js / npmをインストールする(for Windows)

では、iconv-liteとjschardetをインストールします。

npm install iconv-lite
npm install jschardet

iconv-liteとjschardetは、C:\Users\hoge\node_modulesのディレクトリの中に、iconv-liteディレクトリとjschardetディレクトリが作成されインストールされていました。

ここで、.atomディレクトリ内に、node_modulesディレクトリを作る

わたしの場合、.atomディレクトリはUsers\hoge\.atomでした。 そこにnode_modulesディレクトリを作ります。

c:
mkdir \Users\hoge\.atom\node_modules

そして、先ほどインストールされたiconv-liteディレクトリとjschardetディレクトリをガサッっとコピーしました。
(mklinkでリンクを張ってもいいのかもしれません)

init.coffeeの修正

.atomフォルダにあるinit.coffee にスクリプトを書きます。
つぎの様なメニュー操作で、init.coffeeが開くようです。
1.png

ここに、次のようなスクリプトを書いて保存します。

fs = require('fs')

atom.workspace.observeTextEditors (editor) ->
  try
    filePath = editor.getPath()
  catch error
    return
  return unless fs.existsSync(filePath)

  jschardet = require 'jschardet'
  iconv = require 'iconv-lite'
  fs.readFile filePath, (error, buffer) =>
    return if error?
    {encoding} = jschardet.detect(buffer) ? {}
    encoding = 'utf8' if encoding is 'ascii' or encoding is 'windows-1252'
    return unless iconv.encodingExists(encoding)

    encoding = encoding.toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g, '')
    editor.setEncoding(encoding)
  return

あとは、試しにatomを再起動させて、いろんな文字コードのファイルを開いて問題ないか確認してみてください。

まとめ

ちょっとスクリプトを設定しないといけなかったりして敷居が高そうですが、出来てしまえばいろんな文字コードのファイルを書かなければならない人にとっては大変便利だと思います。

けっこう、気持ちいいです。

wankoromaru
2000年前後、PHPプログラマー、そのうちインフラをADSLのころから2014年ごろまで担当して、いまは再びPHPやjQuery、Bootstrapなどを使って1998年ごろのPHPでかいたWEBシステムに機能追加などなど・・・ 個人的には、いろんなクラウドのAPIを使ってシステムをカキカキしたい~
http://wankoromaru.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした