Getting data with UTF-8 charset from MSSQL server using PHP FreeTDS extension

前端 未结 8 1075
暖寄归人
暖寄归人 2020-11-28 09:28

I can\'t seem to get data from MSSQL encoded as UTF-8 using FreeTDS extension.

Connecting:

ini_set(\'mssql.charset\', \'UTF-8\');
$this->_resource         


        
8条回答
  •  情深已故
    2020-11-28 09:51

    MSSQL and UTF-8 are quite a pain in the ... sometimes. I had to convert it manually. The problem: MSSQL doesn't actually know and support UTF-8.

    Convert from database value to UTF-8:

    mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8' ? $value : mb_convert_encoding($value, 'UTF-8');
    

    Converting from UTF-8 to database value:

    mb_convert_encoding($value, 'UCS-2LE', mb_detect_encoding($value, mb_detect_order(), true));
    

    Fortunately I was using Doctrine so all I had was to create a custom StringType implementation.

提交回复
热议问题