我有一个基于PHP和PostgreSQL的Web应用程序(基于Laravel构建)。 Web应用程序PostgreSQL数据库使用UTF-8编码。有一次,我必须将数据传递给托管在另一台服务器上的外部MS SQL Server数据库。但是,它的工作原理是,MS SQL Server数据库中的文本数据部分混乱且不可读,尤其是在涉及特殊字符的情况下。 MS SQL Server sysadmin告诉我它使用2字节的Unicode编码。我想我应该相应地转换。
问题 - 如何正确使用此编码并在将数据写入MS SQL Server数据库之前对其进行编码?
答案 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);
发布以防万一。