このブログをご覧のみなさん、こんにちは。

「Windows 環境で StyleDocco を使う際に発生する「Invalid Windows-31J character」への対応方法」を探るために環境構築をしている際に調査したので、調査した手順をメモとして残しておきます。

「Invalid Windows-31J character」への解決方法

原因その 1 と解決方法

Windows 環境における Ruby の外部エンコーディングが原因です。Windows で Ruby を実行すると規定の外部エンコーディングが Windows-31J になるので、

Error: Invalid Windows-31J character ...

というエラーが発生します。根本的な解決方法は、環境変数 LANG を設定することです。以下のコマンドを実行するか、

>set LANG=ja_JP.utf8

環境変数の編集で LANG を追加してください。

原因その 2 と解決方法

上記の対応をしても同様のエラーが発生するというので、エラーメッセージを見せてもらったところ、

Running "sass:main" (sass) task
Error: Invalid Windows-31J character "\xE3"
        on line 10 of assets/stylesheets/_xxx.scss
        from line 2 of assets/stylesheets/yyy.scss
  Use --trace for backtrace.
Warning: Exited with error code 65 Use --force to continue.
 Aborted due to warnings.

というものでした。 assets/stylesheets/_xxx.scss の中身を確認してみたところ、

@charset "utf-8";

という記載が assets/stylesheets/_xxx.scss にありませんでした。つまり、文字コードの指定漏れが原因です。コメントなどに日本語を含める場合、ファイルの先頭で @charset を使用して UTF-8 を設定する必要がありますが、漏れていたようです。そこで、上記を追記して実行したところ、エラーが解消されました。