我刚在我的网站上添加了一个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)。
答案 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),而无需任何编码功能。