我用php從mysql撒資料然後轉json但是為什麼中

時間 2021-08-30 09:30:44

1樓:與尋比遷

用php的json_encode來處理中文的時候, 中文都會被編碼成unicode

echo json_encode("中文");//"\u4e2d\u6587"

解決方式是加上json_unescaped_unicodeecho json_encode("中文", json_unescaped_unicode);//"中文"

2樓:匿名使用者

因為你的資料庫編輯沒有設定正確,

資料庫編碼一般設為 : utf8 (沒有 '-')

php從mysql查出來的資料轉換成json格式中文亂碼怎麼解決

3樓:柚子ok丶

解決辦法是在使用json_encode之前把字元用函式urlencode()處理一下,然後再json_encode,輸出結果的時候在用函式urldecode()轉回來。具體如下:

//urlencode處理

function json_array($obj) else}return $obj;

}//urldecode解密轉換為中文字元function _json($obj)

echo _json($json);//$json為你要輸出的json陣列

此處遞迴呼叫是為了處理多維陣列······

4樓:閒置星空

在php5.4, json新增了一個選項: json_unescaped_unicode, 故名思議, 就是說, json不要編碼unicode。

echo json_encode($json, json_unescaped_unicode);

找了篇文件可以參考下:http://blog.csdn.net/bjash/article/details/9834497

php執行sql並將返回資料顯示到網頁上為什麼漢字會變成問號

5樓:匿名使用者

是字元編碼問題

mysql字元編碼有四個級別 伺服器級,資料庫級,表級,欄位級.前三種均為預設設定,並不代表你的欄位最終會使用這三種之一字符集設定,以欄位級為準。

從資料庫中查詢資料並輸出顯示也有主要三個地方,一個就是上面所說的,二是連線字符集使用例如mysql_query('set name gbk')的語句設定,三是指令碼字符集(php指令碼的編碼),另外有網頁編碼字符集。

這些編碼應該一致,尤其是連線字符集與欄位字符集。

可使用 show variables like 'character%'; 來檢視相關字符集設定

例如欄位字符集為utf-8 ,連線字符集為utf-8 ,php指令碼為utf-8編碼 ,網頁charset為 utf-8

6樓:du瓶邪

解決辦法如下:

預設是拉丁把編碼設定為gbk

mysql的ini加上 default-charseter-set=gbk

然後用工作管理員關閉mysql,再重啟。

7樓:獨步歐文

首先確認以下幾項(我的是gb2312):

1,mysql資料庫的對應表的編碼方式

show create table 表名 \g;

最後一項:default charset=gb2312

2,html和嵌入的php**是否是gb2312編碼方式

可在:編碼->編碼字符集->中文->gb2312,進行設定(我使用的是notepad++工具)

3,php中sql語句的編碼方式,可通過下面語句執行:

<?php

$con=mysql_connect("localhost:3308","root","root") or die("連線成功

");mysql_select_db("db_school",$con) or die("選擇資料庫失敗!

".mysql_error());

mysql_query("set names 'gb2312'",$con);

********你需要執行的sql語句********

?>

4,html網頁編碼方式

可在頭標籤中設定

這4項的編碼方式要一致,如果設定後,網頁還是顯示亂碼,可滑鼠右鍵單擊ie瀏覽器的空白處,選擇:編碼-簡體中文(gb2312),即可顯示中文。

php讀取mysql資料庫的內容後顯示為亂碼,中文變成問號怎麼辦? 10

8樓:

換成utf8肯定不行,因為是問號,肯定不是三位元組到兩位元組 的問題,而是和拉丁1有關,因為問號是不可能轉換的意思 ,失敗了,

解決:你需要 按資料流入的程式再配置好,再原路返回,,再換重新建庫,匯入 ,,ok

順便說一下,出的分太少了

9樓:匿名使用者

$hostname_conn = "localhost";

$database_conn = "db";

$username_conn = "dbname";

$password_conn = "dbpwd";

$conn = mysql_connect($hostname_conn, $username_conn, $password_conn) or trigger_error(mysql_error(),e_user_error);

mysql_select_db('testdb');

mysql_query("set names 'utf8'");//********

在你的連線資料庫配置檔案中,記得加上最後帶‘****’這句,就解決了了

我和你情況一樣,讀取中文出現‘?’。

10樓:匿名使用者

你找下這段,把 gbk換成utf-8

如果是utf-8就換成gbk

用php從mysql資料庫中取出資料變問號? 50

11樓:匿名使用者

這個是預設設定,你去myql裡面修改就可以了,就是進入到mysql的命令列或者工具欄。

show variables like 'character_set_%';

查到相關的引數然後set一下就可以了,如: set character_set_server=utf8;

mysql讀取中文資料的問題,在mysql的命令列介面是可以讀出中文的,但是在php裡面讀出來的就是問號

12樓:匿名使用者

很明顯是編碼問題:

********************

要想不出現亂碼

請確保:如下幾個地方編碼相同。

-------------------------------拿gb2312來說

1、你的資料庫編碼為gb2312.

2、你的資料庫連線為gb2312.

3、你的php檔案,html檔案編碼是gb2312***************====

看了你的php**。

你用到了 $db->query("set names gb2312");,但是你位置放錯了。

你應該是放在sql語句執行以前。如下:

-------------------------$db->query("set names gb2312")$sql = "select * from t_user";

$rs = $db->query($sql);

這樣就ok了,你重新寫一條資料進去,再查一下試試。

希望我的答案能幫到你,:)

13樓:街頭蜘蛛

<?php

$db=@new mysqli("localhost", "root", "123456","test");

if(mysqli_connect_errno())mysql_query("set names gb2312");

php插入mysql資料庫中文變成亂碼 問號

14樓:℡媙の綺

去mysql裡面設定,不要在php裡設定mysql的編碼,亂碼肯定就是編碼問題無疑,推薦你先把mysql裡面表的編碼改好,然後再把php的編碼改好,這樣就應該沒問題了。

我用php從mysql取出資料然後轉json,但是為什麼中文顯示的是問號

15樓:龍氏風采

首先看你mysql資料庫的編碼和你編輯器的編碼是否一致

16樓:

**編碼問題,查詢結果需要作轉換,比如utf-8

我用php從mysql取出資料然後轉json,但是為什麼中文顯示的是問號

17樓:匿名使用者

沒有圖,不知道具體原因,首先看你mysql資料庫的編碼和你編輯器的編碼是否一致

PHP從Mysql查出來的資料轉換成json格式中文亂碼怎麼解決

柚子ok丶 解決辦法是在使用json encode之前把字元用函式urlencode 處理一下,然後再json encode,輸出結果的時候在用函式urldecode 轉回來。具體如下 urlencode處理 function json array obj else return obj urlde...

PHP插入MySQL資料後變成亂碼

編碼方式不一樣,你資料庫的編碼是gb2312,你頁面的也應該是gb2312 還有一個地方就是連線資料庫的地方加句 mysql query set names gb2312 牛志向 資料庫 程式還有瀏覽器的編碼方式要一樣,要麼都是gb2312,要麼都是utf 8,等等 插入之前要加上下面的語句 mys...

使用PHP向MYSQL資料庫插入中文資料時,頁面中文顯示正常

這個問題不大。主要匯出來是亂碼才問題。你檢查過頁面是不是utf8的沒有,不行最上面加上 header content type text html charset utf 8 好像是utf 8,你可以試試utf8,gb2312總有一個可以的啦。你在資料庫裡看,你在資料庫裡打 set names ut...