|
|
|
json_encode แต่ข้อมูลภาษาไทยออกมาเป็นภาษาแปลกๆ ใครพอมีวิธีแก้มั้งคับ |
|
|
|
|
|
|
|
ลองใช้ Class อันนี้ดูครับ จำไม่ได้เหมือนกันว่าโหลดมาจากไหน
Code (PHP)
<?
class mysql2json{
function getJSON($resultSet,$affectedRecords){
$numberRows=0;
$arrfieldName=array();
$i=0;
$json="";
//print("Test");
while ($i < mysql_num_fields($resultSet)) {
$meta = mysql_fetch_field($resultSet, $i);
if (!$meta) {
}else{
$arrfieldName[$i]=$meta->name;
}
$i++;
}
$i=0;
$json="[\n";
while($row=mysql_fetch_array($resultSet, MYSQL_NUM)) {
$i++;
//print("Ind ".$i."-$affectedRecords<br>");
$json.="{\n";
for($r=0;$r < count($arrfieldName);$r++) {
$json.="\"$arrfieldName[$r]\" : \"$row[$r]\"";
if($r < count($arrfieldName)-1){
$json.=",\n";
}else{
$json.="\n";
}
}
if($i!=$affectedRecords){
$json.="\n},\n";
}else{
$json.="\n}\n";
}
}
$json.="\n]";
return $json;
}
}
?>
การใช้งาน
เรียก Class มาตามปกติ
Code (PHP)
<?
require("mysql2json.class.php");
$hostname_connection = "localhost";
$database_connection = "XXXX";
$username_connection = "XXXX";
$password_connection = "XXXX";
$connection = mysql_connect($hostname_connection, $username_connection, $password_connection) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_select_db($database_connection, $connection);
$query="SELECT XXXXX FROM XXX ORDER BY XXXXX ASC ";
$result=mysql_query($query,$connection);
$num=mysql_affected_rows();
$json=new mysql2json;
$data=$json->getJSON($result,$num);
echo $data;
?>
|
|
|
|
|
Date :
2012-10-05 22:24:41 |
By :
Krungsri |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?
mysql_query("SET NAMES UTF8");
$mysqlstatement="SELECT*FROM books ";
$result=mysql_query($mysqlstatement,$con);
while($member= mysql_fetch_assoc($result)){
$output[]=$member;
}
print(json_encode($output));
mysql_close($con);
?>
ผมใช้ mysql_query("SET NAMES UTF8"); แต่ผลลัพธ์ดึงมาแล้วเป็นตามภาพบนอะคับ
|
|
|
|
|
Date :
2012-10-05 22:36:12 |
By :
AzaIn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองทดสอบแบบนี้ดูครับ
header("Content-Type: text/html; charset=UTF-8");
$a = array('ฟดกหด');
echo json_encode($a, JSON_HEX_TAG | JSON_UNESCAPED_UNICODE);
แต่จริงๆ แล้วถึงภาษาไทยจะออกมาในรูปแบบ unicode ภาษาไทย browser ก็แสดงผลได้ปกติหนิครับ แต่ android ผมไม่ทราบเหมือกัน
unicode
|
|
|
|
|
Date :
2012-10-06 00:29:23 |
By :
nautilus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้กับ android ได้ปกติครับ
|
|
|
|
|
Date :
2012-10-06 07:31:41 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|