[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[397] 先頭に日本語を含まないファイルの文字コード判別

miau [2017/06/29 00:34:00]

仕事でUTF-8のCSVファイルを扱う必要が出てきたので最近使わせていただいているのですが、「ロード時に文字コードを判別する」にチェックを入れていても文字コードの判別に失敗するケースがあるようです。
色々試したところ、ファイル先頭の1000バイトくらい(?)に日本語が含まれていないとShift_JISとみなされている気がします。このバイト数を増やしたり、カスタマイズ可能にしていただけると大変助かります。
(今回使用するファイルは一行目はヘッダ行となっており英文字のみを含むのですが、ファイルによってはヘッダ行のみで2000バイト以上になるものもあります。)

Re: [397] 先頭に日本語を含まないファイルの文字コード判別

miau [2017/06/29 01:38:02]

書いた後で気が付いたのですが、今回のケースでいうと、「文字コードを判別できなかった場合にどの文字コードとみなすか」を設定できる形でも大丈夫ですね。
どちらの方向性にしろ、ご検討いただけると幸いです。

Re: [397] 先頭に日本語を含まないファイルの文字コード判別

あすかぜ [2017/06/29 21:00:35]

はい。ご指摘の通り、文字コードの判別にはファイルの先頭 1000 バイトのみを使っています。
たしかに、Shift_JIS よりも UTF-8 を優先するオプションが必要ですね。

当面の回避策ですが、Cassava Editor の「Macro」フォルダに「!open.cms」という名前のファイルを作り、ファイルの内容を「ReloadCodeUTF8();」としてください。すべてのファイルが UTF-8 で再読み込みされるようになります。
UTF-8 以外のファイルも使う場合は、文字コードを指定したいファイルの特徴を見つけて、

if ([1,1] == "header") {
 ReloadCodeUTF8();
}

のような条件を追加してみてください。

よろしくお願いします。

Re: [397] 先頭に日本語を含まないファイルの文字コード判別

miau [2017/06/30 23:48:27]

回避策のご教示ありがとうございます。今回扱いたいファイルはヘッダ行の先頭が「xxx_id」になると決まっていますので、「!open.cms」以下のように設定してみました。

if (right([1,1], 3) == "_id") {
 ReloadCodeUTF8();
}

今のところ期待どおりに動作しているようです。すばやいご回答ありがとうございました。

Re: [397] 先頭に日本語を含まないファイルの文字コード判別

あすかぜ [2018/07/03 10:48:57]

Ver.2.0 で、オプションダイアログの「ファイル」ページに「UTF-8 を優先して使用する」オプションを追加しました。
このオプションを有効にすると、文字コードが判別できなかった場合に Shift_JIS ではなく UTF-8 が使用されます。

スレッド一覧に戻る返信