[英]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_charset或mysqli :: 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.