• 締切済み

Windows 8、日本語ファイルの読み込み

続けての投稿になってしまいますが……。 Windows 8のWindows Storeアプリの開発についてです。Windows.Storage.FileIO.readTextAsyncでテキストファイルから日本語テキストを読み込みを行う場合、UTF-8であれば日本語も読み込めるのですが、それ以外の文字コードだった場合、読み込み時に例外が発生してしまいます。 どなたか、SJISなど他の文字コードのテキストを読み込む場合どのようにコーディングするのかご存知ではないでしょうか。 function reatFromFile() { var openPicker = new Windows.Storage.Pickers.FileOpenPicker(); openPicker.fileTypeFilter.replaceAll([".txt"]); openPicker.pickSingleFileAsync().then(function (file) { if (file) { var p = document.getElementById("msg"); // 表示先 p.innerHTML = file.name; if (file !== null) { // 日本語はUTF-8でないと読み込み時にエラーになる。 Windows.Storage.FileIO.readTextAsync(file).done( function (fileContent) { p.innerHTML = fileContent; }, function (error) { WinJS.log && WinJS.log(error, "sample", "error"); }); } } else { WinJS.log && WinJS.log("cancelled.", "sample", "status"); } }); }

みんなの回答

回答No.1

JavaScriptは基本的にUTF-8しか対応していないようです。 (世界各国で使われる言語なので当然といえば当然でしょう・・) で、以下のサイトに言語コードの変換方法が載っているので、それを参考にしてみては如何でしょうか。 http://www2.wbs.ne.jp/~kanegon/doc/code.txt

noname#177743
質問者

お礼

うーん、やはりダメなんでしょうか。Windows APIをコールしているだけなので、内部で処理できるのでは、と思ったのですが……。力技でコード変換してみるしかないようですね。ありがとうございました。

noname#177743
質問者

補足

自己解決しました。JavaScriptにはFile APIがあったことをすっかり忘れていました。これを併用することで、無事、読み込めるようになりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascriptの変数に関してです。

    onclickでhtmlの文章を書き換えたいのです。 var sample1="サンプル1です" var sample2="サンプル2です" var sample3="サンプル3です" .... var sample10="サンプル10です" function kakikae('sample') { document.getElementById('kakikaeruBasyo').innerHTML=sample; } このようにして、10通りの文章をテキスト領域に書き換えて表示することができるようになったんですが、htmlでテキストの大きさなどを変更して表示したいのですが、 var sample1="<h1>サンプル1です</h1>" のように書く事はできないですよね・・・?どうしたら変数の中身にcssなどを適用できますか?・・・初心者なので、何を言ってるのか分かりにくいかと思いますが、お願いします><

  • perl5.8.3のunicode環境で日本語の置換え

    お助けください。m(__)m perl5.8.3環境で、utf-8にて書かれたperl内での日本語置換えの質問です。 テキストファイルを「abc.dat」、処理するperlファイルを「rep.cgi」とします。 abc.datを読み込み、ファイル内の文字列「abc」を「あいう」に置換えする部分を「$rep =~ s/abc/あいう/;」とすると、置換えはうまくいっているようなのですが、abc.datに書かれた置換え以降の日本語が文字化けします。 原因はいったいどこにあるのでしょう?? 【テキストファイル abc.dat】文字コードUTF-8、改行コードLF <div> <p>abc</p> <p>あいう</p> </div> 【perlファイル rep.cgi】文字コードUTF-8、改行コードLF use utf8; use Encode; open(TMPL,"<:encoding(utf8)","abc.dat") || die('Error'); while (<TMPL>) { $rep .= $_; } close(TMPL) || die('Error'); $str = 'あいう'; $rep =~ s/abc/$str/; print $rep; 【結果】 <div> <p>あいう</p> <p>あいう</p> </div>

    • ベストアンサー
    • Perl
  • perlをwindows環境でshift-jisのテキストファイルを読

    perlをwindows環境でshift-jisのテキストファイルを読み込み、読み込んだファイルをutf-8でファイルを書き込み(改行コードはLF)をする方法がわかりません。 サンプルプログラムを示してもらえると助かります。 書き込みを”binmode STDOUT, ":utf8";”にするだけでは、下記のようなエラーがでました。エラーの意味が良くわかりませんでした。わかれば教えてください。 Malformed UTF-8 character (unexpected continuation byte 0x82, with no preceding start byte) at utf.pl line 7.

    • ベストアンサー
    • Perl
  • 外部ファイルの参照の仕方

    現在、外部ファイルに記述されたプログラムを参照するコードを書いているのですが、うまく実行できません。以下のコードなのですが、書き方が間違っているようでしたら、教えてください。 プログラムの内容としては、キューへの操作で、pushは値を格納、popは最小値を取り出す、peak最小値を参照する、という機能を提供しています。 (外部ファイル:PriorityQueue.js) function PriorityQueue(){ var queue=[]; var queue2=[]; } PriorityQueue.prototype.push = function (value){ queue.push(value); queue.sort(); queue.sort(function(queue,queue2) { return queue-queue2; }); } PriorityQueue.prototype.pop = function(){ var pop=queue.shift(); return pop; } PriorityQueue.prototype.peak =function(){ var peak= queue.shift(); queue.push(peak); queue.sort(); queue.sort(function(queue,queue2) { return queue-queue2; }); return peak; } } 参照元ファイル: <html><head> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <script src="PriorityQueue.js"></script> <script> var q = new PriorityQueue(); function doPush() { var val = document.driver.push.value; q.push(val); var log = document.getElementById("log"); log.innerHTML += "push(" + val + ")\n<br/>"; } function doPop() { var val = q.pop(); var log = document.getElementById("log"); log.innerHTML += "pop() -&gt; " + val + "\n<br/>"; } function doPeek() { var val = q.peek(); var log = document.getElementById("log"); log.innerHTML += "peek() -&gt; " + val + "\n<br/>"; } </script> </head><body> <form name="driver"> <input type="text" name="push"> <input type="button" value="Push" onclick="doPush();"> <br/> <td><input type="button" value="Pop" onclick="doPop();"> <br/> <td><input type="button" value="Peek" onclick="doPeek();"> </form> <span id="log"></span> </body></html>

  • Ajaxを使った読み込みができない

    ●質問の主旨 Ajax(非同期通信)を使って、 ブラウザ上でテキストファイルの読み込みを させたいのですが、できません。 Ajaxにお詳しい方、ご指導願います。 ●質問の補足 HTML5とjqueryの技術を使って、 テキストファイルの中身(Hello,World)の 読み込みをさせたいと考えております。 参考サイトにもとづいてやってますが、 画像の表示ができません。 表示させるためにはどうしたら良いでしょうか? ●コード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>jQueryの練習</title> <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> </head> <body> <h1>jQueryの練習</h1> <div id="main"></div> <input type="button" id="kick_ajax" value="Ajax!"> <script> $(function() { $('#kick_ajax').click(function() { $('#main').load('contents.txt', function() { alert('読み込み終了!'); }); }); }); </script> </body> </html> ●テキストファイルのファイル名 contents.txt ●参考サイト(ドットインストール) http://dotinstall.com/lessons/basic_jquery/519

    • ベストアンサー
    • AJAX
  • phpmyadminで日本語データが文字化け

    phpmyadminで日本語のデータだけ文字化けしてしまいます。 phpで作成された掲示板からデータをmysqlに投稿し、そのデータを再度掲示板で表示しています。 投稿・表示するphpファイルはutf8で、mysqlのmy.cnfは以下のようになっています。 --------------- [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 --------------- phpmyadmin(2.11.11)側は、MySQ の接続照合順序:utf8_unicode_ci にしています。 phpmyadminで文字化けしているデータをphpで見ると問題なく表示されてるのが不思議です。 どこが問題なのでしょうか。

    • ベストアンサー
    • MySQL
  • ウィンドウサイズを取得するjQuery

    レスポンシブ対応の際、jQueryでリアルタイムにウィンドウサイズを取得する方法について質問です。 例えば「ウィンドウサイズが700以下の時、文字色を赤に変える」としたい時、検索すると下記のようにすればよいとでてきます。 ■ HTML <p>サンプルテキスト</p> ■ jQuery var WindowWidth = $(window).width(); $(window).resize(function(){ if(WindowWidth < 700){ $("p").css({ color: 'red' }); } else { $('#sample').css({ color: 'black' }); } }); 確かにこの記述をするとウィンドウサイズを変更すれば適用されるのですが、元々のサイズが700px以下のときには適用されません。 なので、今は下記のように記述しています。 ■ jQuery var WindowWidth = $(window).width(); $(function(){ if(WindowWidth < 700){ $("p").css({ color: 'red' }); } }); $(window).resize(function(){ if(WindowWidth < 700){ $("p").css({ color: 'red' }); } else { $('#sample').css({ color: 'black' }); } }); こう書くと希望通りの動作(ウィンドウサイズが700px以下のときは文字が赤色になり、ウィンドウサイズを変更するとリアルタイムで変更される)をしてくれるのですが、もう少しきれいにまとめられるのではないかな?と考えております。しかし、うまい記述方法がわからず…。 ご教授いただけると助かります。

  • JavaScriptで日付別のテキストファイル読込

    JavaScript初心者です。よろしくお願いします。 いつもはSSIでテキストファイルを読み込んで表示させているのですが、特定のファイルではなく、日付ごとに読み込むファイルを変える必要があり、いろいろと調べてはみたのですがどうにも参考にできそうなところを見つけられず困っています。 $(function() { $("#test_text").load("sample.txt"); }); これでsample.txtをtest_textの場所に読み込むことはできたのですが、loadで読み込むファイル名を日付によって書き換える方法はないでしょうか。 各ファイル名は0429.txtのように日付にしています。

  • ファイルの日本語コードの調べ方

    2つの同じようなファイルがあり、あるアプリからファイルをインポートしますが、1つはOKですが、1つはNGです。エラーの発生は//の間の日本語の部分で、2つめの/がどうも認識されていないようです。日本語部分は完全に文字化けしていました。 おそらくUTF-8のユニコードであれば正しく認識されると思うのですが、2つのファイルは見た目は日本語部分は同じですが、日本語のコードが現在何か調べる方法はありますか。

  • OneDrive テキストファイル 文字化け

    教えてください Windows10 HE のパソコン,notepadで テキストファイル(日本語、英語混じり)を作成、UTF-8で保存し、OneDriveに入れました Android(8.1.0)でOneDriveに入れたテキストファイルをタップし読み込もうとしたら、英語の部分は読み込めますが、 日本語の部分は表示されません。 →そのテキストファイルを端末に保存→Chromeで日本語、英語全て読めました。 文字が小さいので、「Jota+」というテキストエディタで読んでいます。 パソコンで保存する時、「UTF-8」で保存する事をネットで教えていただきました。 OneDriveの画面でテキストファイルをタップした時、読み込めないのが普通なのでしょうか? それとも、エラーなのでしょうか? エラーの場合、どうすれば良いのか教えてください お願いします。

Drawgraphicの動作環境
このQ&Aのポイント
  • DrawgraphicはWindows11の英語版OSでも動作しますか?
  • ソースネクスト株式会社の製品・サービスについての質問です。
  • DrawgraphicはWindows11の動作環境を満たしており、英語版OSでも問題なく使用することができます。
回答を見る

専門家に質問してみよう