ページ

ラベル 文字コード の投稿を表示しています。 すべての投稿を表示
ラベル 文字コード の投稿を表示しています。 すべての投稿を表示

2016年9月19日月曜日

バッチファイル(.bat)がうまく動かない時の対処法

状況


「メモ帳」でバッチファイルを作成したときに、

C:\Windows\System32>・ソ"C:\Program Files\Google\Chrome\Application\chrome.exe" "http://www.dff.jp/" ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

と、表示されたことはないでしょうか。
・ソ
と入力したわけでもないのに、なぜか入力されている時の対処法をご紹介します。

原因


これは、「メモ帳」で「UTF-8 BOM付」で保存したために起こる問題です。
「メモ帳」でUTF-8を選択して保存した場合、自動的に「UTF-8 BOM付」になります。
これは、変更できないようです。

BOMとは

BOMとは「Byte Order Mark」の略で、ファイルの先頭に 0xEF 0xBB 0xBF がつきます。(バイナリエディタで確認できます)
この値があることで「UTF-8」だと認識するソフトウェアがあるものの(Windowsのソフトウェア)、多くではなく、プログラミングではない方が望ましい(あるとエラーを吐き出す)ため、問題がなければBOMはなくす方が望ましいです。

対処

  • 「メモ帳」以外のテキストエディタを使う(サクラエディタ,TeraPad等がおすすめ)
  • 「メモ帳」を使う場合は「ANSI」で保存(「Shift_JIS」での保存となります)

2016年9月14日水曜日

【sinatra】invalid byte sequence in Windows-31J対策

状況


sinatraを使ってWebアプリケーションを作成していると、

invalid byte sequence in Windows-31J

というエラーが気まぐれに出ます。
このエラーページにある
Windows-31J
というのは、Shift-JISを改造した文字コードみたいなものです。(検索してみてください。詳しく解説しているサイトがあります)

原因


rubyは違う文字コード(例えば UTF-8 など)で書かれたソースコードをWindows-31Jで読み込もうとするため、エラーが表示されるのです。

対処


対策として、

Encoding.default_external = 'UTF-8'

をrubyファイル(.rb)の先頭(1行目)に入力してください。

※UTF-8の部分は、保存したときの文字コードに合わせてください。
ただ、プログラミングをするのならUTF-8を強くお勧めします。というか、こちらが標準です。
(バッチファイルを書くのならShift_JISでもよいと思いますが...)
参考:RubyのSJISはShift_JISじゃない

入力するのは、ERBファイル(.erb)ではないです。

こうすることで、rubyのインタープリタに文字コードを知らせることができます。