2016-03-16 65 views
1

我剛剛在我的網站上添加了一個所見即所得的編輯器,這樣我的用戶就可以以任何他們想要的方式格式化他們的內容。編輯器工作正常,併成功將html代碼內容保存在數據庫中。在php中編碼&解碼來自mssql的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)。

+0

您必須確保始終具有相同的字符集/編碼(數據庫值,數據庫連接,PHP文件和HTML網站)。 –

回答

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或選擇與函數mysql_escape_string($ VAR),沒有任何編碼功能。