現在、データベースがPostgreでかつ、作成されたデータベースがEUC_JPという仕様になっている、フルスクラッチで開発されたシステムをCodeigniterに載せ替えている最中です。
データベースの中身をEUC-JPからUTF-8へと置き換えれば済む話なのですが、
諸事情でそれができません。
そのため、DBはEUC-JP、外部はUTF-8という状況です。ですが、逐一
mb_convert_variablesやmb_convert_encodingなどやってられないため、Codeigniterのモデル内に以下のように記述しました。
php
1<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2 3 4class MY_Model extends CI_Model { 5 6 7 public function __construct() 8 { 9 parent::__construct(); 10 pg_set_client_encoding($this->db->conn_id , "UTF8"); 11 print_r($this->db); 12 }
上記のpg_set_client_encoding関数で一部のテーブルかつ一部のカラムからのみデータを取り出す際は、postgre側がうまく計らってくれてEUCからUTF8へうまく変換できていました 。
しかし、とあるテーブルからデータを参照しようとした際以下のようなエラーが表示されました。
php
1Error Number: 2 3ERROR: character 0xf9fe of encoding "EUC_JP" has no equivalent in "UTF8" 4 5SELECT * FROM "m_shop" WHERE "○○○○○" = '○○○' 6 7Filename: models/search.php 8 9Line Number: 19
このように、変換時に特定の文字が突っかかっているようなんですがこの変換を無視してもよいので、とりあえずデータの参照をしたいとおもっています。
この場合、EUCからUTF8へ強制的に変換させるためになにかしら方法はございませんでしょうか?
ご教授よろしくお願いいたします。
PHPのバージョンは5.3.3
codeigniterは2.2.6
posgtre 8.4
各種バージョンは上記となります。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。