我有Mssql數據庫與排序規則設置爲SQL_Latin1_General_CP1_CI_AS
。我通過PHP(Freebsd OS上的Nginx服務器)連接到數據庫。當我試圖保存ജെയിംസ്, جیمز
等字符時,它將以????
的形式存儲。我的default_charset是PHP中的UTF-8
。你能幫我解決這個問題嗎?謝謝。存儲????在數據庫中是編碼問題?
UPDATE: 當我從我當地的Windows
env試用它時,它成功存儲了字符。但從Freebsd
環境它有問題。下面是分別來自Windows和Freebsd環境的存儲過程調用。從Windows機器
跟蹤:
declare @p1 int
set @p1=2
declare @p14 int
set @p14=0
exec sp_prepexec @p1 output,N'@P1 nvarchar(15),@P2 nvarchar(16),@P3 nvarchar(10),@P4 nvarchar(max),@P5 nvarchar(max),@P6 char(1),@P7 char(1),@P8 nvarchar(max),@P9 int,@P10 nvarchar(1),@P11 int OUTPUT',N'EXEC ValidateFBLogin_sp @p_UserName = @P1, @p_Email = @P2, @p_FBID = @P3, @p_DeviceToken = @P4, @p_IPAddress = @P5, @p_Latitude = @P6, @p_Longitude = @P7, @p_EndpointArn = @P8, @p_UserAccountTypeID = @P9, @p_DeviceType = @P10, @p_ErrID = @P11 OUTPUT',N'ആഷ്ലി',N'[email protected]',N'67463sgs7s',N'',N'',NULL,NULL,N'',2,N'1',@p14 output
select @p1, @p14
跟蹤從FreeBSD的安裝:
EXEC ValidateFBLogin_sp
@p_UserName = 'ആഷ്ലി', @p_Email = '[email protected]', @p_FBID = '45534552', @p_DeviceToken = '',
@p_IPAddress = '', @p_Latitude = NULL, @p_Longitude = NULL,
@p_EndpointArn = '', @p_UserAccountTypeID = 2,
@p_DeviceType = '1', @p_ErrID = 0
從Windows是準備結束的ñ與在參數p_UserName但在FreeBSD事實並非如此。
UPDATE2:從PHP
Laravel5.3框架
連接參數關於數據庫連接:配置/ database.php中
return [
'sqlsrvstaging' => [
'driver' => 'sqlsrv',
'host' => 'XXXXX',
'database' => 'XXXXX',
'username' => 'XXXXX',
'password' => 'XXXXX',
'prefix' => '',
'charset' => 'UTF-8',
'strict' => false,
'pooling' => false,
]
];
代碼爲$this->pdo = DB::connection('sqlsrvstaging')->getPdo();
使用Unicode字符集存儲UTF-8編碼的文本:http://stackoverflow.com/a/32128634/1363190 –