试图让它工作5个小时后,我决定寻求帮助。我的问题是PHP将不同的字符串转换为十六进制而不是MSSQL。
STRING
đžćčšđđ
PHP
bin2hex($ data)// C491C5BEC487C48DC5A1C491C491
MSSQL
CAST('đžćčšđđ'作为varbinary)// F09EE6E89AF0F0
PHP结果需要像MSSQL一样。我能解决什么问题?
编辑1
几乎让它正常工作,仍然有2个字符错误
node.js
答案 0 :(得分:0)
如果您需要使用MSSQL强制转换为varbinary,我建议您这样做。
以下是PDO示例:
$conn = new PDO("sqlsrv:Server=$myServer;Database=$myDB", $myUser, $myPass);
$stmt = $conn->prepare('SELECT CAST(? as varbinary)');
$stmt->execute(array($lastname));
$result = $stmt->fetchAll();
foreach ($result as $row)
{
// Note your result set will return example one row with one column in it
}
即使你没有使用PDO,这也应该给你一个大概的想法。
答案 1 :(得分:0)
经过10个小时的努力才能完成工作,终于做到了!如果某人有类似问题,则发布解决方案。
public function FixCroatianChars($data)
{
$unpacked = unpack('H*hex', mb_convert_encoding($data, 'HTML-ENTITIES'));
return 'CAST(0x' . $unpacked['hex'] . ' as char(' . strlen($unpacked['hex']) / 2 . '))';
}