Re: [PHP-users 28154] PDO での文字化けについて

Yusuke Hata nowel @ xole.net
2006年 1月 18日 (水) 13:26:55 JST


ハタ(nowel)です。

私も似たような症状だったのですが
PDOの問題ではなく、文字エンコードを変更することで対処した記憶があります。
# クライアントはlinux

Oracle 10g(R2だったのですが)で以下のSQLを発行してください。
"SELECT VALUE FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER='NLS_CHARACTERSET'"

mb_internal_encodingで上記の結果のエンコードで直ると思います。
また、環境変数(Linuxの場合)NLS_LANGを正しくセットするとsqlplusでも文字化けは対処できました。

クライアントがwinなら話は別かもしれませんが参考にしてください。

また「Do You PHP」さんに似たような記事があったので参考になると思います。
http://www.doyouphp.jp/inst/inst_unix_dso_430_ic.shtml

06/01/17 に 生田 元規<ikutirin @ yahoo.co.jp> さんは書きました:
> いくちんと申します。よろしくお願いします。
>
> 現在、
> Win XP Pro
> Apache 2.0.54
> PHP 5.1.2
> Oracle 10g
> でPDOを使用してデータの登録・更新・検索・削除といった処
> 理を勉強がてら作成しています。
> (データは名前とメールアドレスの2つだけ)
>
> そこで、登録処理を以下のように実装しておりまして、
> $db = new PDO("oci:dbname=orcl", "scott", "tiger");
> $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
> $db->beginTransaction();
>
> $pName = "名前"
> $pMail = "test @ test.com"
> $stt = $db->prepare("insert into sample values(?, ?)");
>
> $stt->bindValue(1, $pName, PDO::PARAM_STR);
> $stt->bindValue(2, $pMail, PDO::PARAM_STR);
>
> $stt->execute();
> $db->commit();
>
> 正常に登録できるものの登録データは化け化けです。
> (「ク[?」こんなデータです。)
> コード自体はShift-JISで書いています。
> ためしに、
> $stt = $db->prepare("insert into sample
> values('".$pName."','".$pMail."')");
> とやってみると、文字化けせずに登録することができました。
>
> 何故、化けてしまうのかわからず、手詰まり状態です。
> お助けください。
> お願いします。
>
>
>
> --------------------------------------
> GANBARE! NIPPON!
> Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE PARTNER
> http://pr.mail.yahoo.co.jp/ganbare-nippon/
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


--
Yusuke Hata <nowel @ xole.net>
blog: http://blog.xole.net/


PHP-users メーリングリストの案内