我遇到插入MS SQL Server数据库的区域字符串字符的问题。
有一个PHP应用程序连接mssql服务器并插入一些数据。但不是插入如下字符:±,Ą,ć,Ł,ź(等等 - 顺便说一句,这些是波兰的区域字符),当插入mssql表时,它们显示为 a ,A,c,L,z 。
以下是一些背景资料:
好像这个远程mssql服务器没有处理php应用程序发送的这个输入数据。任何人都可以看到/知道这里有什么问题吗?
答案 0 :(得分:1)
也许是一个新手的错误,但我根据KB #239530找到了这个问题的根源:
“当SQL Server将没有N前缀的Unicode字符串从Unicode转换为SQL Server数据库的代码页时,Unicode字符串中SQL Server代码页中不存在的任何字符都将丢失。”
我认为sqlserver的本地实例以某种方式将所有传入的字符串文字视为Unicode字符串而远程服务器不会,因此需要N前缀。
答案 1 :(得分:0)
您可以使用此解决方法,在插入数据库之前使用htmlentities
函数,并在从数据库检索数据后使用html_entity_decode
函数。您可以使用ISO-8859-2
或Windows-1250
字符集。