Unicode UTF-8 Issue with YII and MSSQL framework
Error : QLSTATE[HY000]: General error: 20018 Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.
Diagnosis:
The requisite encoding UTF-8 is not getting set.
Application Stack:
MS SQL
YII framework
PHP
Red Hat
Fixes at all levels of application stack:
1. MSSQL - Checked at the database level, SQL data is getting stored and retrieved without any issues.
2. YII - ini_set('mssql.charset', 'UTF-8'); in index.php
3. PHP - in /etc/php.ini,
default_charset = "UTF-8" mssql.charset = "UTF-8"
4. Red Hat Server
In /etc/freetds.conf -
ensure in teh global settings if dedicated server else have a separate section with these setting for your application instance
[global] host = servername client charset = UTF-8 tds version = 8.0 text size = 20971520
References:
- http://www.yiiframework.com/wiki/16/how-to-set-up-unicode/
- Basics: http://blog.goosoftware.co.uk/2012/12/05/how-ascii-lost-and-unicode-won/
- http://stackoverflow.com/questions/1322421/php-sql-server-how-to-set-charset-for-connection
- http://www.craig-edmonds.com/solved-php-mssql-unicode-encoding-issues/















