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