[PHP-users 33210] Re: PHP5+MSSQLSERVER2005での中国語の取得について

"成田 実" narita @ sri-net.jp
2008年 1月 31日 (木) 16:21:09 JST


新井様ありがとうございます。

お教えいただきましたページも参考にして
SQLクエリアナライザでは問題なく抽出できることは確認しております。

ただ、PHPで抽出すると文字コードが強制的に非UNICODEになってしまい、
抽出後にUTF-8に変換すると文字化けが起きてしまいます。

 ■mssql関数で抽出
  mb_detect_encodingで返される文字コード:SJIS
 ■PDO_ODBC関数で抽出
  mb_detect_encodingで返される文字コード:SJIS
 ■ADOdb関数で抽出
  mb_detect_encodingで返される文字コード:SJIS
 ■sqlsrv関数で抽出(MSが提供しているドライバ)
  mb_detect_encodingで返される文字コード:EUC
 ※PHPはUTF-8に設定してあります

日本語のみの場合でも、
抽出したデータをmb_convert_encoding関数を
使用すれば正しく表示させることができております。

このことからも、PHPのMSSQLSERVER系の関数が、
UNICODE型(nchar、nvarchar)に完全に対応して
いないような感じがしています。


どこかの設定を変更したり、
DB接続方法を変更したりすることで
正しくUNICODEで抽出できる方法はないのでしょうか。
(諦めるしかないのでしょうか。。。)

些細な情報でも構いません。
お知恵をいただければ幸いです。
よろしくお願いいたします。


TAKAYUKI ARAI wrote:
> 新井です。
> 
> 以下、参考になるかもしれません。
> http://www.thinkit.co.jp/free/article/0707/14/2/
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3


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