Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
13 / 1063 <前へ | 次へ>

〔1051〕ajaXplorer エディタのマルチエンコーディング化
 Hidemi Oya WEB  (10/04/17 1:44)

引用なし
    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

〔1049〕ajaXplorer って結構便利 Hidemi Oya (10/04/17 0:30)
〔1050〕ajaXplorer のインストール Hidemi Oya (10/04/17 1:20)
〔1053〕XREA で ajaXplorer を使う Hidemi Oya (10/04/20 1:05)
〔1051〕ajaXplorer エディタのマルチエンコーディン... Hidemi Oya (10/04/17 1:44) <<<
〔1052〕Re:ajaXplorer エディタのマルチエンコーデ... Hidemi Oya (10/04/20 0:40)

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
13 / 1063 <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.