PHP + MS SQL Server字符编码

时间:2015-11-03 20:38:51

标签: php sql sql-server codeigniter freetds

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

问题:我有MS SQL字段内​​容:Igazgatóságielőterjesztések 这显示在SQL查询之后:Igazgat s giel?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使用哪种字符编码? 如何转换此字符串才能工作?

1 个答案:

答案 0 :(得分:0)

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

  • 为特殊字符添加一些标识符以替换自您的应用程序以来的特殊字符,例如,如果您需要使用双尖号保存“o”,请替换为“_1”(想一个更好的主意 :P 作为标识符).
  • 编写一个存储过程,用双尖号再次替换那个“o”的“_1”,但是,由于 SQL Server,您直接在存储过程的代码中写入字符。

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

另外:您是否检查了存储字符的列的类型?无论如何,从一开始就开始尝试。

相关问题