【发布时间】:2015-09-21 15:17:19
【问题描述】:
我有一个 sql server 表:
create table tmp (fname nvarchar(40))
我有一个插入一些希腊字符的 php 脚本:
$cn = sqlsrv_connect(...
// insert greek chars
sqlsrv_query($cn, "INSERT INTO tmp (fname) VALUES (N'ΚΩΝΣΤΑΝΤΙΝΟΣ')");
// read them back again
$rs = sqlsrv_query($cn, "SELECT fname FROM tmp");
$row = sqlsrv_fetch_array($rs, SQLSRV_FETCH_NUMERIC);
// output result
print "<br />from database: " . $row[0];
sqlsrv_close($cn);
这按预期工作(即希腊输入 - 希腊输出)
如果我现在使用 SQL Server Management Studio (SSMS):
select * from tmp
我明白了:
ΚΩÎΣΤΑÎΤΙÎΟΣ
如果我使用 SSMS 进行插入:
delete from tmp
INSERT INTO tmp (fname) VALUES (N'ΚΩΝΣΤΑΝΤΙΝΟΣ')
select * from tmp
我明白了:
ΚΩΝΣΤΑΝΤΙΝΟΣ
但是如果我从 php 访问它:
$cn = sqlsrv_connect(...
$rs = sqlsrv_query($cn, "SELECT fname FROM tmp");
$row = sqlsrv_fetch_array($rs, SQLSRV_FETCH_NUMERIC);
print "<br />from database: " . $row[0];
sqlsrv_close($cn);
我明白了:
?O?S???????S
我试过<meta charset="utf-8"> 和<meta charset="utf-16"> - 没有区别。
所以 - 两个问题:
这是怎么回事?
如何才能使 SSMS 和 php 保持一致?
我正在使用:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Microsoft SQL Server Management Studio 11.0.2100.60
PHP 5.6.7
【问题讨论】:
标签: php sql-server