2016-08-16 6 views
4

SQL Server(2014)で特殊文字(UTF-8)を使用してデータを正しく保存するにはどうすればよいですか?私のHTMLページがUTF-8コード化され、データベーステーブルの列がNVARCHARを入力され、接続文字セットがUTF-8に設定されますが、文字列Larvel charset UTF-8 with sqlsrv

ハイチcoupléesアラカルト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', 
    ), 

とfreetds.confに次のように設定しています

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

あなたのデータベースサーバーの照合(FI鉱山が順序SQL_Latin1_General_CP1_CI_ASである)である何...また、ログインロール – Hackerman

+0

のデフォルトの言語を確認してくださいにあなたはまだ解決してください? – vietnguyen09

+0

ubuntu(freeTDS)でsybaseドライバを使用しているときにこの問題が発生しました。これは、Windows Server(IIS)から同じLaravelアプリケーションを実行しているときには発生しません。 – ryannjohnson

答えて

0

あなたは1月2017年

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

に出てきたLinux用のMSのドライバを試すことができます
#### 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." 

または、次のようにプリコンパイルされたプル&インストール方法を使用します手順:DBLIBモジュールを無効にする方法

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 

sudo phpdismod pdo_dblib 
sudo service php7.0-fpm restart