筆記 PHP查詢mysql資料後中文字元亂碼

2022-04-27 11:06:09 字數 1840 閱讀 3637

新建表clubs

create

table

`clubs` (

`id`

int(11) not

null

auto_increment,

`name`

varchar(30) character

set utf8 not

null

default

'',

primary

key(`id`)

) engine

=myisam auto_increment=

1default charset=utf8 collate=utf8_unicode_ci;

id  name

1   程式設計師

2   架構師

3   產品經理

4   測試

如果在phpmyadmin中檢視name欄位內容就是?,修改mysql 字符集選擇utf8,mysql 連線校對選擇utf8_general_ci

在mysql中檢視字段內容為正確的中文字元後,通過mysql_query('select * from clubs')查詢

用var_dump列印查詢結果如下,所有的中文漢字都變成了?

array (size=4)

0 =>

array (size=2)

'id' => string '1' (length=1)

'name' => string '???' (length=3)

1 =>

array (size=2)

'id' => string '2' (length=1)

'name' => string '???' (length=3)

2 =>

array (size=2)

'id' => string '3' (length=1)

'name' => string '????' (length=4)

3 =>

array (size=2)

'id' => string '4' (length=1)

'name' => string '??' (length=2)

解決辦法:在執行mysql_query之前先執行

mysql_query("set names utf8");

如果還不行,請確認php檔案編碼格式是否是utf8格式,同時在php檔案頭增加

header("content-type:text/html;charset=utf-8");

解決問題的根本辦法就是把相關的編碼格式都統一為utf8。

查詢結果中文字元沒問題了,但是$clubs轉化為json時,name欄位中文字元卻又變了

$clubs=json_encode($clubs

);echo($clubs);

輸出內容如下

[,,,]

解決方案:

foreach ( $clubs

as$key => $value

)

}

$clubs=json_encode($clubs

);echo(urldecode($clubs));

原因:json_encode只支援utf8編碼的字元,使用json作為提交和接收的資料格式時,字元都採用utf8編碼處理,當我們的頁面編碼和資料庫編碼不是採用utf8的時候,就極容易出現中文亂碼的問題。解決辦法是在用js或者php處理json資料的時候都採用utf8的形式。

mysql大資料分表後查詢

1億條資料,分100張表 1.首先建立100張表 i 0 while i 99 這樣插入資料前通過get hash table獲取資料存放的表名。3.使用merge儲存引擎來實現一張完整的code表 create table if not exists code full code char 10 ...

PHP查詢MySQL 資料庫後返回中文為問號

查詢到的資料中包含的中文無法顯示,返回的都是問號,不確定是資料庫儲存時的問題還是返回後的編碼問題。於是先通過終端登入資料庫,查詢了資料,發現儲存的資料沒有問題,所以基本斷定返回的結果的編碼的問題。通過google,網上查了很多方法,我參照其中的操作進行相應的嘗試.試過新增header content...

MySQL查詢資料 學習筆記

資料查詢是dbms最重要的功能,本節介紹如何使用select語句查詢資料表中的一列或多列資料,使用集合函式顯示查詢結果,連線查詢,子查詢以及使用正規表示式進行查詢等。連線查詢 內連線,外連線。復合條件連線查詢,新增過濾條件,限制查詢的結果。子查詢,指乙個查詢語句巢狀在另乙個查詢語句內部的查詢,先查詢...