PHP+MS SQL Server字符编码


PHP + MS SQL Server character coding

我在Ubuntu Linux服务器上有一个Codeigner项目。我不使用MySQL,因为我正在连接Microsoft SQL 2014 Express Server。(我在Linux服务器上使用FreeTDS)FreeTDS正在工作,我可以连接MS SQL服务器,但我在字符编码方面有问题。我在我的MS SQL服务器中使用Hungarian_CI_AS协作,在FreeTDS(客户端字符集=UTF-8)和Codinger上使用UTF-8。

问题:我有MS SQL字段内容:Igazgatósági elõterjesztések这显示在SQL查询之后:Igazgat�s�吉尔?terjeszt�sek(它没有显示匈牙利字符ó、á、õ、é等)我认为这是UTF-8的问题。我找过这个问题,但没有找到任何好的线索。我尝试了ini_set('mssql.charset','UTF-8');在php.ini上,但这不起作用。我尝试在查询后转换字符串。示例:UTF-8到ISO8859-1,UCS2到UTF-8,UCS2从ISO8859-1等等。最好的结果是当í,ó,ú,é角色起作用,但Şcharater不起作用。

解决方案是什么?MS SQL Server使用哪种字符编码?如何转换此字符串以便工作?

首先,请检查您是否可以键入该字符,因为某些工具与您的应用程序不同,例如SQL Server Management Studio,然后将其保存在表中,并创建一个带有变量的存储过程,例如,保存该字符。在这两种情况下,如果您都能正确看到该字符,请按照以下步骤操作:

  • 为特殊字符放置一些标识符以替换自应用程序以来的特殊字符,例如,如果您需要保存";o";用双锐音符替换为"_1〃;(想一个更好的主意:P表示标识符)
  • 编写一个存储过程来替换"_1〃;再次为此";o";使用双锐音符,但由于SQL Server,您可以直接在存储过程的代码中写入字符

这有点麻烦,取决于您是否可以直接在SQL Server中键入该字符。我以前遇到过这样的问题,我不记得确切的最终解决方案,但我记得这个技巧,它让我继续努力寻找最终解决方案。

加:你检查过存储字符的列的类型了吗?,不管怎样,从一开始就开始尝试。