对,我在PHP中运行mssql存储过程,重音字符似乎返回为? 存储过程是
ALTER PROCEDURE [dbo].[dbname]
@ProjectID AS int
AS
SELECT ProjectName COLLATE SQL_Latin1_General_CP1_CI_AS AS ProjectName,
CustomerName COLLATE SQL_Latin1_General_CP1_CI_AS AS CustomerName
FROM Project
WHERE ProjectID = @ProjectID
END
我的PHP与此相关(显示的返回值是针对ABCDĒčďāĀÖØÖÖÃēù)
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");
$stmt=mssql_init("select.Project", $dbhandle);
$desktopid = $_GET['desktopid'];
$compid = 0;
$custid = 0;
mssql_bind($stmt, "@ProjectID", $desktopid, SQLINT4, FALSE, FALSE);
$result = mssql_execute($stmt);
$row = mssql_fetch_assoc($result);
echo $row['ProjectName']; ==== ABCD????????????
utf8_decode($row['ProjectName']); ==== ABCD????????????
utf8_encode($row['ProjectName']); ==== ABCD????????????
我可以用手弄清楚如何解码函数返回的字符我没有找到其他来源的帮助,我甚至尝试了从堆栈溢出到无效的几个修复。
请注意,如果我有选择,我会使用mysql与php而不是mssql,并且我在debian服务器上运行php
答案 0 :(得分:1)
我需要调用ini_set('mssql.charset', 'UTF-8');
(或更改php.ini文件中的设置)。
感谢Mikael Eriksson为我提供了我遗失的搜索字词(unicode),以帮助我找到http://agimpert.blogspot.com/2011/01/unicode-php-headaches.html上的答案