|
|
|
ใครรู้บ้าง json_encode เชื่อมต่อกับฐานข้อมูล แล้วสามารถแสดงเป็นภาษาไทยได้ |
|
|
|
|
|
|
|
ใครรู้บ้างครับ json_encode ที่ทำการเชื่อมต่อกับฐานข้อมูล (MS-SQL หรือ MySQL) แสดงได้เฉพาะภาษาอังกฤษ และ ตัวเลขเท่านั้น อยากให้แสดงเป็นภาษาไทยด้วย
Code (PHP)
<?
$a = mssql_connect("localhost\sa", "sa", "smice");
$b = mssql_select_db("dbnew");
$sign = trim($_POST['sign']);
$c = "select distinct Register, Brand, Model from cars where Chassis_ID='".$sign."'";
$d = mssql_query($c);
$e = mssql_num_fields($d);
$f = array();
while ($g = mssql_fetch_array($d)) {
$h = array();
for ($i=0; $i<$e; $i++) {
$h[mssql_field_name($d, $i)] = $g[$i];
}
array_push($f, $h);
}
mssql_close($a);echo json_encode($f);
?>
ผลลัพธ์
{"Register":"3","Brand":"","Model":""}
ความต้องการที่จะให้เป็น
{"Register":"3บล3838","Brand":"นิสสัน","Model":"นาวาร่า"}
Tag : PHP, MySQL, Ms SQL Server 2005, Ms SQL Server 2008, Ms SQL Server 2012, Android
|
|
|
|
|
|
Date :
2015-04-21 16:44:16 |
By :
suparuark |
View :
1379 |
Reply :
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?
$a = mssql_connect("localhost\sa", "sa", "smice");
$b = mssql_select_db("dbnew");
$sign = trim($_POST['sign']);
$c = "select distinct Register, Brand, Model from cars where Chassis_ID='".$sign."'";
$d = mssql_query($c);
$e = mssql_num_fields($d);
$f = array();
while ($g = mssql_fetch_array($d)) {
$h = array();
for ($i=0; $i<$e; $i++) {
$h[mssql_field_name($d, $i)] = $g[$i];
}
array_push($f, $h);
}
mssql_close($a);echo json_encode($f);
?>
ให้เพิ่มส่วนของภาษาไทยเข้าไปด้วยครับ ตอนที่ query ข้อมูลออกมา mysql_query("SET NAMES utf8");
เป็น
Code (PHP)
<?
$a = mssql_connect("localhost\sa", "sa", "smice");
$b = mssql_select_db("dbnew");
$sign = trim($_POST['sign']);
$c = "select distinct Register, Brand, Model from cars where Chassis_ID='".$sign."'";
mysql_query("SET NAMES utf8");
$d = mssql_query($c);
$e = mssql_num_fields($d);
$f = array();
while ($g = mssql_fetch_array($d)) {
$h = array();
for ($i=0; $i<$e; $i++) {
$h[mssql_field_name($d, $i)] = $g[$i];
}
array_push($f, $h);
}
mssql_close($a);echo json_encode($f);
?>
|
|
|
|
|
Date :
2015-04-21 18:34:42 |
By :
namepure |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16. mssql_close($a); echo json_encode($f);
ก่อน บันทัดข้างบน ลอง print_r($f) มาดูก่อนครับว่า ได้รับข้อมูลถูกต้องหรือเปล่า
ถ้าถูกต้อง
ช่วย copy ข้อมูลที่ได้มาลงหน่อยครับ
คำสั่ง json_encode(); ไม่น่าทำงานผิดนะครับ
|
|
|
|
|
Date :
2015-04-21 21:41:10 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ออกแล้วครับ แต่ไม่ใช่ภาษาไทย
Code (PHP)
$a = mssql_connect("localhost\sa", "sa", "smice");
$b = mssql_select_db("dbnew");
$sign = trim($_POST['sign']);
$c = "select distinct Register, Brand, Model from cars where Chassis_ID='".$sign."'";
mysql_query("SET NAMES utf8");
$d = mssql_query($c);
$e = mssql_num_fields($d);
$f = array();
while ($g = mssql_fetch_array($d)) {
$h = array();
for ($i=0; $i<$e; $i++) {
$h[mssql_field_name($d, $i)] = $g[$i];
}
array_push($f, $h);
}
mssql_close($a);
print_r($f);
echo "<br /><br />";
echo json_encode($f);
ผลลัพธ์
Array ( [0] => Array ( [Register] => 3��3838 [Brand] => ������ [Model] => ������� ) )
[{"Register":"3","Brand":"","Model":""}]
ถ้าได้เป็นภาษาไทยจะขอบคุณมากๆ ครับ
|
|
|
|
|
Date :
2015-04-22 09:38:38 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
function mat ($matches) {
return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');
}
function raw_json_encode($input) {
return preg_replace_callback( '/\\\\u([0-9a-zA-Z]{4})/', mat , json_encode($input) );
}
echo raw_json_encode( $f );
|
|
|
|
|
Date :
2015-04-22 10:03:21 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$a = mssql_connect("localhost\sa", "sa", "smice");
$b = mssql_select_db("dbnew");
$sign = trim($_POST['sign']);
$c = "select distinct Register, Brand, Model from cars where Chassis_ID='".$sign."'";
mysql_query("SET NAMES utf8");
$d = mssql_query($c);
$e = mssql_num_fields($d);
$f = array();
while ($g = mssql_fetch_array($d)) {
$h = array();
for ($i=0; $i<$e; $i++) {
$h[mssql_field_name($d, $i)] = $g[$i];
}
array_push($f, $h);
}
mssql_close($a);
print_r($f);
echo "<br /><br />";
echo json_encode($f);
echo "<br /><br />";
function mat ($matches) {
return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');
}
function raw_json_encode($input) {
return preg_replace_callback( '/\\\\u([0-9a-zA-Z]{4})/', mat , json_encode($input) );
}
echo raw_json_encode( $f );
ผลลัพธ์
Array ( [0] => Array ( [Register] => 3��3838 [Brand] => ������ [Model] => ������� ) )
[{"Register":"3","Brand":"","Model":""}]
[{"Register":"3","Brand":"","Model":""}]
ก้อเป็นเหมือนเดิมครับ
|
|
|
|
|
Date :
2015-04-22 11:47:15 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใสให้เต็มรูปแบบ html
<!doctype html>
<html>
<head>
<meta charset="utf8" />
</head>
<body>
<?php
.....
?>
</body>
</html>
ผมคิดว่า field type คงไม่ใช่ nvarchar
ให้ใช้ iconv แปลงค่าให้เป็น utf8 ก่อนครับ ที่บันทัด 12.
$h[mssql_field_name($d, $i)] = $g[$i];
แก้เป็น
$h[mssql_field_name($d, $i)] = iconv( 'tis620', 'utf8', $g[$i]);
และ บันทัด 5 เอาออกครับ ไม่ได้ประโยชน์อะไร mssql กับ mysql มันทำร่วมกันไม่ได้
mysql_query("SET NAMES utf8");
|
|
|
|
|
Date :
2015-04-22 20:40:18 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆ ครับ
ตอนนี้ผมทำการเปลี่ยนแปลงเลิกใช้ json_encode() แล้วครับ ใช้ xml แทน
Code (PHP)
header("Content-type:text/xml");
echo '<?xml version="1.0" encoding="windows-874"?>';
$conn = mssql_connect("localhost\sa", "sa", "smice");
mssql_select_db("dbnew");
$cha4 = "11011";
$cha1 = "select distinct Chassis_ID, Register, Brand, Model from cars where Chassis_ID='".$cha4."' order by Register asc";
$cha2 = mssql_query($cha1);
echo "<data>";
while ($cha3 = mssql_fetch_array($cha2)) {
echo "<user>";
echo "<Chassis_ID>".trim($cha3['Chassis_ID'])."</Chassis_ID>";
echo "<Register>".trim($cha3['Register'])."</Register>";
echo "<Brand>".trim($cha3['Brand'])."</Brand>";
echo "<Model>".trim($cha3['Model'])."</Model>";
echo "</user>";
}
echo "</data>";
ผลลัพธ์
ผลเสีย ต่อการเอามาใช้ใน Android
ดึงจากฐานข้อมูล (MS-SQL) ออกมาเป็นภาษาไทยได้แล้ว ทีนี้ต้องหาวิธีการให้แสดงใน Android เป็นภาษาไทย ต้องศึกษาเพิ่มเติมอีกครับ
|
|
|
|
|
Date :
2015-04-23 10:00:29 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าใช้ Interface กับ อุปกรณ์อื่น ๆ แนะนำให้ใช้ UTF-8 แทน windows-874 ครับ ส่วนบ Android ของดูกระทู้นี้ครับ
Android MySQL ภาษาไทย มีปัญหากับการส่งค่าแบบ HttpPost จาก android ไป PHP เป็นภาษาไทย เรียนเชิญด้านในครับ
|
|
|
|
|
Date :
2015-04-23 10:06:55 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ แต่ต้องแปลงแบบต้องดูได้เฉพาะใน android เท่านั้น
รูปแบบ PHP เชื่อมต่อ XML
รูปแบบ XML
Android
|
|
|
|
|
Date :
2015-04-23 10:44:43 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดีใจด้วยครับ
|
|
|
|
|
Date :
2015-04-23 11:21:11 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|