2012-04-24 5 views
1

UTF-8でデータをSQL Server(2005)に保存するにはどうすればよいですか?私のHTMLページはUTF-8で、テーブルの列はnvarchar型で、接続文字セットはUTF-8に設定されていますが、ロシア語の文字列 'ЛогистикаДругое'は '????????? ?????? 'テーブルに入れる。私はsqlsrv v2を使用しています。ここでの接続のparamsです:PHP sqlsrv 2とUTF-8

$dbConnParams = array('server' => "server", // SQL Server 
         'params' => array("Database"  => "dbname", 
             "UID"   => 'user', 
             "PWD"   => 'pass', 
             "CharacterSet" => 'UTF-8')); 

$dbh = sqlsrv_connect($dbConnParams['server'], $dbConnParams['params']); 

(PHP 5.2.17、iis7.5、MS SQL Server 2005の、SQLSRV 2)

答えて

1

我々は結合のparamsせずにODBCを使用するときには、歴史的な理由によって引き起こされた:

$sql = "usp_cis_upd 
      @Key = " . $key . ", 
      @Name = '" . $name . "'"; 
odbc_exec($dbh, $sql); 

paramsをバインドされている場合、文字列が記録さ、よく保存されます。

$sql = "usp_cis_upd 
      @Key = ?, 
      @Name = ?"; 

$params = array($Key, 
       $Name); 

$stmt = sqlsrv_query($dbh, $sql, $params); 
0

ほとんどの場合、それはあなたのデータベースのセットアップの問題です。データが格納されている列には、Unicodeの照合順序が必要です。そうしなければ、Unicode文字を受け入れないため、疑問符が付けられます。

データベースでUTF-16を使用すると、問題が解決する場合があります。なぜ多くの深さの理由のために、参照してください。http://blogs.msdn.com/b/qingsongyao/archive/2009/04/10/sql-server-and-utf-8-encoding-1-true-or-false.aspx