PHP / MSSQL字符串到HEX

时间:2018-04-03 23:37:46

标签: php sql-server string hex

试图让它工作5个小时后,我决定寻求帮助。我的问题是PHP将不同的字符串转换为十六进制而不是MSSQL。

STRING

  

đžćčšđđ

PHP

  

bin2hex($ data)// C491C5BEC487C48DC5A1C491C491

MSSQL

  

CAST('đžćčšđđ'作为varbinary)// F09EE6E89AF0F0

PHP结果需要像MSSQL一样。我能解决什么问题?

编辑1

几乎让它正常工作,仍然有2个字符错误

node.js

2 个答案:

答案 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 . '))';
}