编码&从php中的mssql解码html代码

时间:2016-03-16 10:44:10

标签: php sql-server-2008 odbc

我刚在我的网站上添加了一个WYSIWYG编辑器,因此我的用户可以按照自己的方式格式化他们的内容。编辑器工作正常,并成功地将html编码内容保存在数据库中。

问题是当我尝试查看MSSQL数据库中的内容时,这是它在网页上显示的内容:

static_cast<Obj>(nullptr)

显示内容的php代码是:

�fa)2016-03-16 12:35:19.000Pg;e)@��+�!!P�P+�fa ��`��,�!H+�H+� �����,�1 � �||�`���X���sql�1 m!���1rsode!!htmlspecialchars_decode!flyerflyer9
���9����X� ������x�����`��1�r~����X�����id!1+!connection.phpflyer_id,� x����,�hpr_id,� x����,�) ����a)���]�� �|����*?���@B�r~�������������Ya�v�&������C:\inetpub\wwwroot\123\test_en_de.phpY43ectsql�9SELECT * FROM flyer_master Where flyer_id = '9����#����)`!�@#��,��,��,��)' ��Errorresultodbc_exec� h����,�

是否可以帮助我更正此代码,以便正确显示html编码文本?或者,还有另一种方法吗?

请注意我使用的是php + odbc + Microsoft SQL Server 2008 R2(RTM)。

1 个答案:

答案 0 :(得分:1)

您可以使用utf-8编码

我需要从一个特定的虚拟主机服务中访问数据库。页面采用UTF-8编码,表格接收的数据应插入数据库而不改变编码。该数据库也是UTF-8。

SET字符集'utf8'或SET名称'utf8'在这里都没有正常工作,所以这个解决方法确保所有变量都设置为utf-8。

  <?php

// ... (creating a connection to mysql) ...

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);

$re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} exit;

?>`

所有重要的变量现在都是utf-8,我们可以安全地使用INSERT或SELECT与mysql_escape_string($ var),而无需任何编码功能。