带有 sqlsrv 的 Laravel 字符集 UTF-8

Ved*_*ash 5 sql-server laravel

我应该怎么做才能在 SQL Server (2014) 中正确存储带有特殊字符 (UTF-8) 的数据?我的 HTML 页面是 UTF-8 编码的,数据库表中的列是类型nvarchar,连接字符集设置为 UTF-8,但字符串

海地夫妇 à la capacité

存储为

??????????????????

或有时

????????? ??????

在表中。我正在将 Laravel 5 与流浪家园一起使用。以下是连接参数:

'sqlsrv' => array(
        'driver'   => 'sqlsrv',
        'host'     => 'DB_HOST',
        'database' => 'DB_DATABASE',
        'username' => 'DB_USERNAME',
        'password' => 'DB_PASSWORD',
        'prefix'   => '',
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
    ),
Run Code Online (Sandbox Code Playgroud)

并在 freetds.conf 中设置了以下内容:

[global]
tds version = 8.0
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)

jer*_*edy 0

您可以尝试 2017 年 1 月发布的适用于 Linux 的 MS 驱动程序。

https://learn.microsoft.com/en-us/sql/connect/odbc/linux/microsoft-odbc-driver-for-sql-server-on-linux

#### Script to Install MS SQL Server driver on Ubuntu:
#!/bin/bash
# SQL Server Driver Installer for Laravel Homestead
#
# This script downloads, compiles, and installs the PHP 7 extension
# files for both the native sqlsrv and the PDO pdo_sqlsrv drivers.

echo '=================================================================='
echo ' Get the Microsoft Driver Source Code from Github'
echo '=================================================================='

cd ~
git clone https://github.com/Microsoft/msphpsql.git
cd msphpsql
git checkout PHP-7.0-Linux

echo '=================================================================='
echo ' Run the ODBC Installer Script'
echo '=================================================================='

sh ODBC\ install\ scripts/installodbc_ubuntu.sh

echo '=================================================================='
echo ' Compile and Install the Native sqlsrv Driver'
echo '=================================================================='

cd ~/msphpsql/source/sqlsrv
phpize && ./configure CXXFLAGS=-std=c++11 && make
sudo make install
sudo echo "extension=sqlsrv.so" | sudo tee /etc/php/7.0/mods-available/sqlsrv.ini
phpenmod sqlsrv

echo '=================================================================='
echo ' Compile and Install the pdo_sqlsrv Driver'
echo '=================================================================='

cd ~/msphpsql/source/pdo_sqlsrv
phpize && ./configure CXXFLAGS=-std=c++11 && make
sudo make install
sudo echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php/7.0/mods-available/pdo_sqlsrv.ini
sudo phpenmod pdo_sqlsrv

echo '=================================================================='
echo ' Restart the PHP-FPM Service'
echo '=================================================================='

sudo systemctl restart php7.0-fpm.service

echo '=================================================================='
echo ' Clean Up'
echo '=================================================================='
echo "Done."
Run Code Online (Sandbox Code Playgroud)

或者使用预编译的拉取和安装方法,步骤如下:

wget https://github.com/Microsoft/msphpsql/releases/download/4.0.8-Linux/Ubuntu16.tar
tar -xf Ubuntu16.tar
sudo cp ./Ubuntu16/*nts*.so /usr/lib/php/20151012
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql mssql-tools
sudo touch /etc/php/7.0/mods-available/pdo_sqlsrv.ini
Run Code Online (Sandbox Code Playgroud)

如何禁用 dblib 模块:

sudo phpdismod pdo_dblib
sudo service php7.0-fpm restart
Run Code Online (Sandbox Code Playgroud)