首頁 >後端開發 >php教程 >TP框架和PDO字符編碼的問題

TP框架和PDO字符編碼的問題

WBOY
WBOY原創
2016-08-04 09:19:191402瀏覽

如果用框架插入中文並查看不會亂碼  如果用PDO插入和查詢的中文也不會亂碼  但是用框架查看PDO插入的中文就會亂碼  用PDO輸出查看TP插入的中文也會亂碼  這是為什麼?如果在mysql黑窗直接插入中文的話  用框架看中文不會亂碼 用PDO則會亂碼  我PDO裡面加了這句話也不管用啊 header('content-type:text/html;charset=utf-8; ');      
我之前改過 字符編碼  都是瞎改的  後來我查看了表的字符編碼   發現為什麼字段是uft8格式  表卻是gbk格式?像這種情況怎麼讓框架和PDO方式查詢的中文才能不是亂碼呢?某個欄位的編碼和這個表格的編碼有什麼關係嗎?到底以哪個為準?
這是mysql現在的字元編碼
TP框架和PDO字符編碼的問題

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=gbk |






</code>

回覆內容:

如果用框架插入中文並查看不會亂碼  如果用PDO插入和查詢的中文也不會亂碼  但是用框架查看PDO插入的中文就會亂碼  用PDO輸出查看TP插入的中文也會亂碼  這是為什麼?如果在mysql黑窗直接插入中文的話  用框架看中文不會亂碼 用PDO則會亂碼  我PDO裡面加了這句話也不管用啊 header('content-type:text/html;charset=utf-8; ');      
我之前改過 字符編碼  都是瞎改的  後來我查看了表的字符編碼   發現為什麼字段是uft8格式  表卻是gbk格式?像這種情況怎麼讓框架和PDO方式查詢的中文才能不是亂碼呢?某個欄位的編碼和這個表格的編碼有什麼關係嗎?到底以哪個為準?
這是mysql現在的字元編碼
TP框架和PDO字符編碼的問題

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=gbk |






</code>

tp框架採用的是utf8格式,所以你一定是資料庫字元集還設定的有問題,需要將資料庫設定成utf8,表格也需要設定成utf8即可
你看你上面的SQL程式碼,欄位是utf8,表卻是gbk,一定是有問題的

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=utf8 |</code>
<code>ALTER DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci</code>

不要糾結,統一把你整個專案所涉及編碼的地方都設定成utf8就不會出現亂碼問題了

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn