我刚刚在我的网站上添加了一个所见即所得的编辑器,这样我的用户就可以按照他们想要的任何方式格式化他们的内容。编辑器工作正常,并成功将 html 编码内容保存在数据库中。
问题是当我尝试查看MSSQL数据库中的内容时,这是它在网页上显示的内容:
�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����,�
显示内容的 php 代码是:
<?php
include("connection.php");
$flyer_id = 43 ;
$sql = ("SELECT * FROM flyer_master Where flyer_id = '".$flyer_id."' ") or die ("Error");
$result=odbc_exec($connect,$sql)or die(exit("Error en odbc_exec"));
while(odbc_fetch_row($result))
{
$id = odbc_result($result,1);
$name = odbc_result($result,2);
$flyer = odbc_result($result,3);
}
echo $flyer;
//$a = htmlentities($flyer);
echo "<br>";
echo htmlspecialchars_decode(flyer);
//echo $de_code = html_entity_decode($flyer);
//echo $de_code = htmlspecialchars($flyer ,ENT_QUOTES, 'UTF-8');
?>
你能帮我更正这个代码,以便正确显示html编码文本吗?或者,有没有其他方法可以做到这一点?
注意我正在使用php+odbc+Microsoft SQL Server 2008 R2(RTM)。
您可以使用
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,我们可以安全地使用带有mysql_escape_string($var)的INSERTs或SELECTs,而无需任何编码函数。