Sql server 带sqlsrv的Laravel字符集UTF-8

Sql server 带sqlsrv的Laravel字符集UTF-8,sql-server,laravel,Sql Server,Laravel,如何在SQL Server(2014)中正确存储具有特殊字符(UTF-8)的数据?我的HTML页面是UTF-8编码的,数据库表中的列是nvarchar类型,连接字符集设置为UTF-8,但字符串 哈蒂·库普勒(Haïti coupléesála Capacityé) 存储为 慈꿃楴挠畯汰꧃獥쌠₠慬挠灡捡瑩꧃ 或者有时候 什么 在桌子上。我在流浪者家园使用Laravel 5。以下是连接参数: 'sqlsrv' => array( 'driver' => 'sqlsrv

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

哈蒂·库普勒(Haïti coupléesála Capacityé)

存储为

慈꿃楴挠畯汰꧃獥쌠₠慬挠灡捡瑩꧃

或者有时候

什么

在桌子上。我在流浪者家园使用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',
    ),
并在freetds.conf中设置了以下内容:

[global]
tds version = 8.0
client charset = UTF-8

您可以尝试2017年1月推出的Linux MS驱动程序

或者通过以下步骤使用预编译的pull and install方法:

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
如何禁用dblib模块:

sudo phpdismod pdo_dblib
sudo service php7.0-fpm restart

我也有同样的问题,几乎让我发疯。下面的脚本应该适用于任何使用Ubuntu18.04LTS和Laravel的人。(如果您使用Forge,请将其粘贴到供应后配方中。)

我缺少的部分是最后一行,您在/etc/odbcinst.ini文件中添加了ODBC\u App\u Unicode\u Type=1。

我真的希望这能帮助别人避免我所经历的痛苦

# Add tools & drivers for SQL Server
cd ~
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt -y update
ACCEPT_EULA=Y apt -y install msodbcsql17
ACCEPT_EULA=Y apt -y install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /home/forge/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /home/forge/.bashrc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /home/forge/.zshrc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /root/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /root/.bashrc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /root/.zshrc
source /root/.zshrc
apt -y install unixodbc-dev
pecl install sqlsrv
pecl install pdo_sqlsrv
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini
phpenmod -v 7.4 sqlsrv pdo_sqlsrv
service php7.4-fpm reload
service nginx reload
echo 'ODBC_App_Unicode_Type=1' >> /etc/odbcinst.ini # <-- don't forget this!
# End
#为SQL Server添加工具和驱动程序
光盘~
卷曲https://packages.microsoft.com/keys/microsoft.asc |apt密钥添加-
卷曲https://packages.microsoft.com/config/ubuntu/18.04/prod.list >/etc/apt/sources.list.d/mssql-release.list
apt-y更新
接受_EULA=Y apt-Y安装msodbcsql17
接受_EULA=Y apt-Y安装mssql工具
echo“export PATH=“$PATH:/opt/mssql tools/bin”>>/home/forge/.bash\u profile
echo“export PATH=“$PATH:/opt/mssql tools/bin”>>/home/forge/.bashrc
echo“export PATH=“$PATH:/opt/mssql tools/bin”>>/home/forge/.zshrc
echo“export PATH=“$PATH:/opt/mssql tools/bin”>>/root/.bash\u profile
echo“export PATH=“$PATH:/opt/mssql tools/bin”>>/root/.bashrc
echo“export PATH=“$PATH:/opt/mssql tools/bin”>>/root/.zshrc
source/root/.zshrc
apt-y安装unixodbc dev
pecl安装sqlsrv
pecl安装pdo_sqlsrv
printf“priority=20\nextension=sqlsrv.so\n”>/etc/php/7.4/mods-available/sqlsrv.ini
printf“priority=30\nextension=pdo_sqlsrv.so\n”>/etc/php/7.4/mods-available/pdo_sqlsrv.ini
phpenmod-v7.4 sqlsrv-pdo_sqlsrv
维修php7.4-fpm重新加载
服务nginx重新加载

echo'ODBC_App_Unicode_Type=1'>/etc/odbcinst.ini#您的数据库服务器排序规则是什么(f.i mine是SQL_Latin1_General_CP1_CI_AS)…还要检查您解决的登录角色的默认语言吗?在ubuntu上使用sybase驱动程序(与freeTDS一起)时,我遇到了这个问题。从Windows服务器(IIS)运行相同的Laravel应用程序时不会发生这种情况。同样存在同样的问题,您是否找到了解决方案?您可以尝试2017年1月推出的适用于Linux的MS驱动程序
# Add tools & drivers for SQL Server
cd ~
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt -y update
ACCEPT_EULA=Y apt -y install msodbcsql17
ACCEPT_EULA=Y apt -y install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /home/forge/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /home/forge/.bashrc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /home/forge/.zshrc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /root/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /root/.bashrc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /root/.zshrc
source /root/.zshrc
apt -y install unixodbc-dev
pecl install sqlsrv
pecl install pdo_sqlsrv
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini
phpenmod -v 7.4 sqlsrv pdo_sqlsrv
service php7.4-fpm reload
service nginx reload
echo 'ODBC_App_Unicode_Type=1' >> /etc/odbcinst.ini # <-- don't forget this!
# End