sqlsrv_encoding_utf8

Опубликовано 2012.02.07

В базах данных от Microsoft (MSSQL) очень часто наблюдаются проблемы с кодировкой. Данные нужно переводить из windows-1251 в UTF-8. Это делается на уровне базы данных.Можно использовать функцию
  1. PDO::SQLSRV_ENCODING_UTF8
для драйвера PDO.Очень удобный драйвер для общения с любой базой данных.
  1. $serverName = "serverName\SQLEXPRESS";
  2. $name= "user_name";
  3. $pass = "password";
  4. $options = array(PDO::SQLSRV_ATTR_ENCODING=>PDO::SQLSRV_ENCODING_UTF8, "CharacterSet" => "UTF-8");
  5.  
  6. try
  7. {
  8. $conn = new PDO("sqlsrv:Server=".$serverName."; Database=DB_Name", $name, $pass, $options);
  9. echo "Connected!";
  10. }
  11. catch(Exception $e)
  12. {
  13. die(print_r($e->getMessage()));
  14. }
Или устанавливать атрибут при соединении с БД
  1. $conn->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);
Если перебороть эту напасть не удастся-можно использовать iconv на стороне php сервера. Если и это не поможет-смените тип поля с varchar на nvarchar.Должно помочь.