MSSQL server 2008 R2 не может хранить данные в UTF-8

#php #sql-server #iis-7

#php #sql-сервер #iis-7

Вопрос:

У меня есть рабочая конфигурация: TestLink 1.9.10 PHP 5.4 IIS 7 MSSQL server 2008 R2 Данные UTF8 вставлены в базу данных с неправильной кодировкой. Также я использую SQLSRV и PDO_SQLSRV версии 3.0.1 Попытался изменить varchar на nvarchar DBfield тип. Результата нет. Есть идеи?

Ответ №1:

 Hi putting "N" prefix for each string value like:
insert into table(col1,col2) values(N'value1',N'value2');

and example of PHP:

<?php
//Returns records with Id#46 or first name starting with 'Mary'

$server = '127.0.0.1'; 
$link = mssql_connect($server, 'sql_user', 'sql_user_pass'); 

//Select DB 
$dbn = 'dbName'; 
mssql_select_db($dbn); 

//input variables
$name='Mary%';
$id=46;

//necesssary for stored procedure
$params="@name varchar(50),@id int";
$paramslist="@name='$name%',@id='$id'";

$sql = "select FirstName,LastName,EmpId from employees where FirstName like  @name or EmpId = @id  " ;

$dbsql = "EXEC sp_executesql 
          N'$sql', 
          N'$params',
          $paramslist";

//important to have the "N'" !

$result=mssql_query($dbsql,$link);
?>
  

Комментарии:

1. Это помогло вручную вставить данные UTF8 в базу данных. Но это решение мне не подходит. Потому что я не могу изменить весь php-код приложения. Тем не менее, спасибо за помощь. Я нашел другое решение своей проблемы: я везде меняю кодировку с UTF8 на WINDOWS-1251. Так что это помогло.