dongyashun2559 2015-09-21 15:17
浏览 36

与SQL服务器管理工​​作室相比,php中的希腊字符插入

I have a sql server table:

create table tmp (fname nvarchar(40))

I have a php script that inserts some Greek characters:

$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);

This works as expected (ie. greek in - greek out)

If I now use SQL Server Management Studio (SSMS):

select * from tmp

I get:

ΚΩÎΣΤΑÎΤΙÎΟΣ

If I do the insert using SSMS:

delete from tmp
INSERT INTO tmp (fname) VALUES (N'ΚΩΝΣΤΑΝΤΙΝΟΣ')
select * from tmp

I get:

ΚΩΝΣΤΑΝΤΙΝΟΣ

BUT if I access that from 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);

I get:

?O?S???????S

I have tried <meta charset="utf-8"> and <meta charset="utf-16"> - makes no difference.

So - two questions:

What is going on here?

How can I get consistency with both SSMS and php?

I'm using:

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
  • 写回答

1条回答 默认 最新

  • duangao7133 2015-09-22 11:45
    关注

    It seems all I needed was the addition of "CharacterSet"=>"UTF-8" in my connection string. I was thrown by the fact that other non-ASCII data has successfully been going into this database for ages without this addition.

    $connectionInfo = array("Database"=>"mydatabase", "UID"=>"myuserid", "PWD"=>"mypassword", "CharacterSet"=>"UTF-8");
    $cn = sqlsrv_connect("myserver", $connectionInfo);
    ...
    
    评论

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图