カテゴリー
プログラム 社内SE

NextCloudで日本語(Shift-JIS)のテキストファイルを開く(簡単 1ファイル修正)

NextCloudをそのまま使うと日本語ファイルが文字化けすることがある。Windowsで昔作ったテキストファイルの文字コードがSJISになっているためである。

ググるとTEXTアプリのソースを2箇所修正する方法が出てくるのだが、最近のNextCloudのTEXTアプリは自前でエンコード変換するプログラムがあり、それを修正するほうが簡単で本筋である。(エンコード変換のプログラムで日本語の優先順が低いため、SJISのファイルがうまく変換されていないのである。)

修正ファイルは以下のファイルとなる。

(NextCloudインストールフォルダ)/apps/text/lib/Service/EncodingService.php

このファイルの上部のエンコード一覧(変数名:COMMON_ENCODINGS)の配列の先頭にSJISを加える。(NextCloud 24.0.5では29行目)

// コメントが元のソース 'UTF-8'の前に、'SJIS-win', 'SJIS', を追加
// public const COMMON_ENCODINGS = [ 'UTF-8', 'GB2312', 'GBK', 'BIG-5', 'SJIS-win', 'EUC-JP', 'Windows-1252', 'ISO-8859-15', 'ISO-8859-1', 'ASCII'];
public const COMMON_ENCODINGS = [ 'SJIS-win', 'SJIS', 'UTF-8', 'GB2312', 'GBK', 'BIG-5', 'SJIS-win', 'EUC-JP', 'Windows-1252', 'ISO-8859-15', 'ISO-8859-1', 'ASCII'];

これでSJISのファイルが文字化けせずに表示されるようになる。(中国語のGB2312テキストファイルが今度は文字化けするかもしれないが、そこは考えない。考えるならブラウザの表示言語でエンコードの優先度を変更するなどで実用上は賄えそう。)