我在Ubuntu/PHP7/nginx堆栈上有一个web应用程序,用于数据报告目的,将数据传递到SQL Server2008数据库。我使用php7.0-sybase PDO包连接到MSSQL。我使用对存储过程的预准备语句调用来插入数据。SQL Server端的字段是各种长度的nvarchar字段。问题: web应用程序中带有特殊字符(换行符、重音字母等)的表单内容在插入数据库后显示为所有乱码(中文风格)字符。我怀疑这是一个编码问题,但我还不能确切地指出这个问题是什么,因为我在这个领域没有知识。
如果我使用T-SQL测试直接在SQL Server上执行插入操作,则带有特殊字符的文本可以正确显示。
如果我在从web应用程序发送文本之前转储文本的编码,它会告诉我它是ASCII,这应该与UTF-8兼容,对吗?我还尝试在发送之前显式地将其转换为UTF-8。
是否需要在db驱动程序的配置中进行设置?或者可能驱动程序只是不知道如何正确处理这些数据?
需要注意的是,我们已经尝试将这种类型的数据发送到varchar字段,并且文本显示正确,因此这是nvarchar数据类型的一个特别问题。
发布于 2016-08-24 15:06:30
到目前为止,SQL Server不支持存储数据的UTF-8。nvarchar数据类型对应于UTF-16。
https://stackoverflow.com/questions/39112994
复制相似问题