将数据传递给2字节的unicode MSSQL数据库

时间:2017-06-26 14:19:22

标签: php sql-server postgresql unicode encoding

我有一个基于PHP和PostgreSQL的Web应用程序(基于Laravel构建)。 Web应用程序PostgreSQL数据库使用UTF-8编码。有一次,我必须将数据传递给托管在另一台服务器上的外部MS SQL Server数据库。但是,它的工作原理是,MS SQL Server数据库中的文本数据部分混乱且不可读,尤其是在涉及特殊字符的情况下。 MS SQL Server sysadmin告诉我它使用2字节的Unicode编码。我想我应该相应地转换。

问题 - 如何正确使用此编码并在将数据写入MS SQL Server数据库之前对其进行编码?

2 个答案:

答案 0 :(得分:0)

您可以使用mb_convert_encoding更改字符编码:

$message = "Héllo";
$new_message = mb_convert_encoding($message, "UTF-16");

评论中给出的示例 - INSERT INTO table (textcolumn1, intcolumn1) VALUES (N'unicodé string', 1) - 是正确的。不幸的是,没有办法用准备好的陈述来做到这一点,例如: INSERT INTO table (textcolumn1, intcolumn1) VALUES (N?, ?)无效。

答案 1 :(得分:0)

在玩各种编码转换后,我终于找到了一个适合我的方法: iconv('UTF-8', 'UCS-2LE', $string);

发布以防万一。