|
ajaXplorer 2.6 のエディタは、エンコーディングが UTF-8 のみ日本語の表示が可能です。Shift-JIS や EUC-JP で書いたファイルは、日本語が文字化けしますし、日本語部分を無視して編集して保存すると、UTF-8 にエンコーディング変換されてしまいます。
これでは不便なので、Shift-JIS や EUC-JP 等のファイルも日本語を表示でき、元ファイルのエンコーディングのまま保存できるように改良してみました。修正するファイルは ajaXplorer インストールディレクトリ下の plugins/access.fs/class.fsAccessDriver.php ひとつだけです。
なお、この修正をしてもマルチエンコーディング対応にならない場合は、php.ini の [mbstring] 関係の設定が有効になっていない可能性が高いので、最低限下記の2つは設定しておいてください。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
1. マルチエンコーディング表示
function readFile の
if($headerType == "plain")
{
header("Content-type:text/plain");
}
を下記のように修正します。
if($headerType == "plain")
{
// header("Content-type:text/plain");
// Added by OhYeah!
$header = "Content-type:text/plain";
if (ConfService::getLanguage() == 'ja' && function_exists('mb_detect_encoding')) {
if (!$data) {
$filePathOrData = file_get_contents($filePathOrData);
$data = true;
}
session_start();
$_SESSION['edenc'] = mb_detect_encoding($filePathOrData);
session_write_close();
switch (strtolower($_SESSION['edenc'])) {
case 'sjis':
case 'sjis-win':
$header .= '; charset=shift_jis';
break;
case 'euc-jp':
case 'eucjp-win':
$header .= '; charset=euc-jp';
break;
case 'iso-2022-jp':
case 'jis':
$header .= '; charset=iso-2022-jp';
break;
case 'utf-8':
$header .= '; charset=utf-8';
}
}
header($header);
// End Addition
}
2. 元ファイルのエンコーディングで保存
function switchAction の case "edit" の
$fp=fopen($fileName,"w");
の直上に下記を追加。
// Added by OhYeah!
if (isset($_SESSION['edenc'])) {
$code = mb_convert_encoding($code, $_SESSION['edenc'], mb_detect_encoding($code));
}
// End Addition
|
|