|
2系でPostgreSQL(EUC-JP)環境で郵便番号DB登録する際の文字コード変換 CPI等のレンタルサーバで2系をインストールする場合、 PostgreSQLの文字コードがEUC-JPだったりするので そのままでは郵便番号DB登録機能が使えません。 (変換マップの都合上)
そこで0xe3809c等の特殊文字をEUC-JPで利用できる物に変換してやる必要があるのですが、 とりあえず2系付属の郵便番号データが動くだけのカスタマイズをしてみました。 念のために半角カナも全角カナに直します。
data/class/pages/admin/basis/LC_Page_Admin_Basis_ZipInstall.php
106 + $search = array('〜', '−'); 107 + $replace = array('〜', '-'); 108 while (!feof($fp)) {
116 - $sqlval['state_kana'] = mb_convert_kana($arrCSV[3], "KV"); 116 + $sqlval['state_kana'] = mb_convert_kana($arrCSV[3], "KV"); 117 - $sqlval['city_kana'] = mb_convert_kana($arrCSV[4], "KV"); 117 + $sqlval['city_kana'] = mb_convert_kana($arrCSV[4], "KV"); 118 - $sqlval['town_kana'] = mb_convert_kana($arrCSV[5], "KV"); 118 + $sqlval['town_kana'] = mb_convert_kana($arrCSV[5], "KV"); 119 - $sqlval['state'] = str_replace($search, $replace, $arrCSV[6]); 119 + $sqlval['state'] = str_replace($search, $replace, $arrCSV[6]); 120 - $sqlval['city'] = str_replace($search, $replace, $arrCSV[7]); 120 + $sqlval['city'] = str_replace($search, $replace, $arrCSV[7]); 121 - $sqlval['town'] = str_replace($search, $replace, $arrCSV[8]); 121 + $sqlval['town'] = str_replace($search, $replace, $arrCSV[8]);
PostgreSQLの場合、レンタルサーバで割り振られたデータベースの文字コードが変換できないのが悪いと言えば悪いのですが。
もうちょっとMySQL使用時のパフォーマンスが上がれば素敵ですね。
ちなみにSC_DbConn内のコンストラクタ内で下記の宣言をしてやると 2系+EUC-JP環境のPostgreSQLを使用する際もインストール時のエラーを回避できたりします。
$this->conn = $objDbConn; + if ($this->conn instanceof DB_pgsql) { + $this->conn->query("SET NAMES 'utf8'"); + }
|