Php 将数据传递到2字节unicode MSSQL数据库

Php 将数据传递到2字节unicode MSSQL数据库,php,sql-server,postgresql,unicode,encoding,Php,Sql Server,Postgresql,Unicode,Encoding,我有一个基于PHP和PostgreSQL(基于Laravel构建)的web应用程序。web应用程序PostgreSQL数据库使用UTF-8编码。有时,我必须将数据传递到托管在另一台服务器上的外部MS SQL Server数据库。但是,MS SQL Server数据库中的文本数据部分混乱且无法读取,特别是在涉及特殊字符的情况下。MS SQL Server系统管理员告诉我它使用2字节Unicode编码。我想我应该相应地皈依 问题-在将数据写入MS SQL Server数据库之前,如何正确使用此编码和

我有一个基于PHP和PostgreSQL(基于Laravel构建)的web应用程序。web应用程序PostgreSQL数据库使用UTF-8编码。有时,我必须将数据传递到托管在另一台服务器上的外部MS SQL Server数据库。但是,MS SQL Server数据库中的文本数据部分混乱且无法读取,特别是在涉及特殊字符的情况下。MS SQL Server系统管理员告诉我它使用2字节Unicode编码。我想我应该相应地皈依


问题-在将数据写入MS SQL Server数据库之前,如何正确使用此编码和编码数据?

您可以使用
mb\u convert\u编码
更改字符编码:

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

注释-
插入表(textcolumn1,intcolumn1)值(N'unicdéstring',1)
中给出的示例是正确的。不幸的是,对于准备好的语句,没有办法做到这一点,例如,
插入到表中(textcolumn1,intcolumn1)值(N?,?)
将不起作用。

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


以防这对其他人有帮助。

插入时,应使用
nvarchar
而不是
varchar
使用N进行unicode编码。像这样的
插入表(textcolumn1,intcolumn1)值(N'unicdéstring',1)
@JacobH,最好使用参数而不是字符串literals@MikhailLobanov该点没有改变。@Deez发布您的代码和表定义