Вставка символов Юникода с помощью PHP -> ODBC -> MS SQL? - PullRequest
5 голосов
/ 05 августа 2009

У меня есть следующий код:

$sql = "update tbl_test set category = N'resumé';

echo $sql;

$rs=odbc_exec($conn,$sql);

Где $ conn - это соединение DSN ODBC с сервером MSSQL. Кажется, проблема в том, что где-то между PHP и MySQL (может быть, ODBC?) Юникод-символы преобразуются в ненужные. Если я копирую вставить точно то, что говорит эхо, прямо в Enterprise Manager, он прекрасно вставляется в MS SQL. Однако, если я запускаю код, он всегда переходит в MSSSQL как resumà ©. Есть идеи, что мне здесь не хватает?

Ответы [ 3 ]

4 голосов
/ 06 августа 2009

Проблема была не в ODBC, а в PHP ... решение было использовать utf8_decode () для строк, возвращаемых из базы данных.

1 голос
/ 13 августа 2009

Если вы работаете в Windows и используете PHP 5.3, используете PDO_ODBC с собственным клиентом SQL, и ваш вводимый текст - UTF-8, это должно сработать автоматически.

0 голосов
/ 11 августа 2009

Я бы здесь осторожно наступил. В прошлом, когда речь шла об интеграции SQL Server и PHP, я сталкивался со случаями, когда SQL Server использует в 3-5 раз больше места для хранения, чем на самом деле требуется для символов Unicode. В зависимости от того, как вы подключаетесь к базе данных и как данные закодированы. Насколько я понимаю, MSFT работает над новым драйвером (или, возможно, он был выпущен некоторое время), который решает эту проблему и в целом улучшает интеграцию PHP. С некоторыми старыми стеками у вас могут возникнуть проблемы. Я рекомендую посмотреть на размер данных в БД, чтобы убедиться, что соединение не дополняет ваши данные.

Jacob

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...