Zestaw znaków klienta jest konieczny, ale niewystarczający:
ini_set('mssql.charset', 'UTF-8');
Szukałem przez dwa dni, jak wstawić dane UTF-8 (z formularzy internetowych) do MSSQL 2008 przez PHP. Czytam wszędzie, gdzie nie możesz, najpierw musisz przekonwertować do UCS2 (tak jak zaleca rozwiązanie cyphera). W systemie Windows SQLSRV jest uważany za dobre rozwiązanie, którego nie mogłem wypróbować, ponieważ pracuję na Mac OSX.
Jednak podręcznik FreeTDS (którym PHP używa mssql w OSX) mówi, aby dodać literę "N" przed cytatem otwierającym:
mssql_query("INSERT INTO table (nvarcharField) VALUES (N'űáúőűá球最大的采购批发平台')", +xon);
Zgodnie z tą dyskusją, znak N mówi serwerowi, aby przekonwertował na Unicode.https://softwareengineering.stackexchange.com/questions/155859/why-do-we-need-to-put-n-before-strings-in-microsoft -sql-serwer