簡體   English   中英

php mysql特殊字符

[英]php mysql special character

我的桌子看起來像這樣 -

province_id int(11)                  
province_title char(200) utf8_general_ci 
parent int(8) int(2)

我直接從phpMyadmin插入了大量數據(不是從php頁面)。 但是當我檢索這些數據並在php頁面中顯示它們時,那​​么特殊字符就會出現問題。

喜歡-

Québec shows -  Qu�bec.

我的html標題看起來像 -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我認為插入數據時可能會發生問題。 我怎樣才能在phpmyadmin中轉換這些數據? 任何幫助?

好像你沒有在任何地方使用utf-8 所以你的數據在某些時候搞砸了。 根據你究竟在做什么,你必須改變/添加以下一個或多個點(很可能是你忘記了SET CHARSET / mysql_set_charset ):

  • 告訴MySQL使用utf-8。 為此,請將此添加到my.cnf:

     collation_server = utf8_unicode_ci character_set_server = utf8 
  • 在與mysql交互之前,發送以下兩個查詢:

     SET NAMES 'utf8'; CHARSET 'utf8'; 

    或者,讓php在打開連接后執行此操作:

     mysql_set_charset('utf8', $conn); // when using the mysql_-functions mysqli::set_charset('utf8') // when using mysqli 
  • 將UTF-8設置為數據庫的默認字符集

     CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8'; 
  • 為表做同樣的事情:

     CREATE TABLE `my_table` ( -- ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
  • 假設客戶端是瀏覽器,請將您的內容作為utf-8和正確的標頭提供:

     header('Content-type: text/html; charset=utf-8'); 

    要確定瀏覽器能夠理解,請添加元標記:

     <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
  • 最后但並非最不重要的是,告訴瀏覽器使用utf-8提交表單

     <form accept-charset="utf-8" ...> 

問題可能是您與MySQL連接的字符集。 請參閱mysql_set_charsetmysqli :: set_charset

MySQL服務器未配置為默認情況下從客戶端期望UTF-8編碼。

所以你必須使用打開連接

mysql_query("SET NAMES utf8");   

如果您使用的是PDO,

$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

$dbh = new PDO($dsn, $username, $password, $options);

如果在phpmyadmin中看到數據時看起來沒問題,那么問題可能在於文件本身的文本內容。

使用Eclipse(編輯»設置編碼)或Notepad ++(編碼)確認您在文件中具有正確的編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM