Electronでエディタを作る(ACE使用) ~ローカルファイルの読み込み~
2016/06/11
[ad#top-1]
前回の記事はこちら。
今回はファイルを読み込んでエディタに表示させます。
基本的にWebページではJavaScriptだろうがPHPだろうが、ローカルファイルへのアクセスは原則できません。これはウェブページからの不正アクセスを防ぐためにあるんですが、Electronはデスクトップアプリを想定して作られた技術なので、そこについては解決されています。
まずはHTML(index.html)にファイル読込用のボタンを仕込みます。
<button onclick=”openFile();”>Open</button>
で、JavaScript側は以下の通りです。ソースファイルはここからダウンロードしてください。
var fs = require(‘fs’); |
var remote = require(‘remote’); |
var browserWindow = remote.require(‘browser–window’); |
var dialog = remote.require(‘dialog’); |
var editor = null; |
function onLoad() { |
editor = ace.edit(“input_txt”); |
editor.getSession().setMode(“ace/mode/csharp”); |
editor.setTheme(“ace/theme/chrome”); |
} |
function openFile(){ |
var win = browserWindow.getFocusedWindow(); |
dialog.showOpenDialog( |
win, |
//ダイアログの設定 |
{ |
properties: [‘openFile’], |
filters: [ |
{ |
name: ‘C#ソースファイル’, |
extensions: [‘cs’, ‘txt’] |
} |
] |
}, |
//ファイル選択後の処理 readFile関数へ |
function (filenames) { |
if (filenames) { |
readFile(filenames[0]); |
} |
}); |
} |
function readFile(path) { |
fs.readFile(path, function (error, text) { |
if (error != null) { |
alert(‘error : ‘ + error); |
return; |
} |
//alert(text.toString().length); |
editor.setValue(text.toString(), –1); |
}); |
} |
特に難しくなく簡単なコードで以下の通り読込みできました。
ところが、ここで問題発生。相手の文字コードがShift-JISであるため、読み込むとこのように日本後部分が文字化けしてしまうんです。Electron側はUTF-8なので、互いにアンマッチとなってしまいました。うーむ。何か良い方法はないだとうか・・・。目下ここが課題です。
[ad#ad-1]
スポンサーリンク