[PHP-users 32222] Re: SQL Server 2000 を利用した時の nvarchar 項目の文字化けについて
kuri-369 @ mail.goo.ne.jp
kuri-369 @ mail.goo.ne.jp
2007年 5月 29日 (火) 14:18:09 JST
栗田です。
メールを出した後、PDO 関数ではなく、Microsoft SQL Server 関数を使って試したところ、漢字の文字
化けは無くなりました。
PDO 関数を使って書きたかったのですが、諦めてMicrosoft SQL Server 関数を使って書きます。
お騒がせいたしました。
----- Original Message -----
送信者: kuri-369 @ mail.goo.ne.jp<kuri-369 @ mail.goo.ne.jp>
宛先: php-users @ php.gr.jp
日付:Monday, May, 28, 2007, 06:16 PM
件名: [PHP-users 32211]SQL Server 2000 を利用した時の nvarchar 項目の文字化けについて
>
>
> はじめまして。栗田といいます。
>
> SQL Server 2000 との接続で質問させていただきます。
>
> データベースに SQL Server 2000(SP4) を利用し、ODBC で接続しているのですが、
> nvarchar で定義されたフィールドを PHP から表示させようとすると文字化けして
> しまいます。
>
> 以下のようにテーブルを作成し、データを登録しプログラムを実行すると表示結果
> のように15文字までは正常に表示されるのですが、その後ろが文字化けしてしま
> います。この時の文字コードは SJIS で、mb_strlen() の返ってきた値は36でした。
>
> その他のテーブルも見ていたのですが、nvarchar で定義されている文字数分の半分
> の文字数までなら表示は問題ないようです。
>
> 環境設定に問題があるのでしょうか。
> 解決方法をご存知の方がおられましたら、ご教授いただけますでしょうか。
> どうぞよろしくお願い申し上げます。
>
> ----- 表示結果 ---------------------------------
> グレート・ブリテンおよび北アイノ)( 2・ヒXニ6
> ------------------------------------------------
>
> ----- 作成したテーブル -----
> CREATE TABLE dbo.KUNI (
> KUNI_CD char(3) NOT NULL ,
> KUNI_NM nvarchar(30)
> );
>
> ----- 登録したデータ -----
> insert into dbo.KUNI (KUNI_CD, KUNI_NM)
> values ('GBN', 'グレート・ブリテンおよび北アイルランド連合王国(英国)');
>
> ----- 表示用の PHP プログラム -----
> $dbh_str = "odbc:Driver={SQL Server};Server=XXXX;Database=YYY;Uid=ZZZ;Pwd=PPP;";
>
> try {
> $dbh = new PDO($dbh_str);
> } catch (PDOException $e) {
> echo "接続エラー!: " . $e->getMessage() . "<br/>";
> die();
> }
>
> $result = $dbh->prepare("select * from dbo.kcg_kuni");
> $result->execute();
> $row = $result->fetchall(PDO::FETCH_NAMED);
>
> foreach($row as $w) {
> echo $w['KUNI_NM'];
> }
>
> ----- 実行環境 -----
> Server OS : Windows Server 2003 R2
> Web Server : Apache 2.2.3
> PHP : 5.2.2
> DB Server : SQL server 2000 SP4
>
> ----- PHP.ini -----
> [mbstring]
> mbstring.language = Japanese
> mbstring.internal_encoding = SJIS-win
> mbstring.http_input = pass
> mbstring.http_output = pass
> mbstring.encoding_translation = On
> mbstring.detect_order = auto
> mbstring.substitute_character = none;
> mbstring.func_overload = 0
>
> 以上
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>
PHP-users メーリングリストの案内