|
|
|
มีปัญหากับการแสดงข้อมูลภาษาไทยจาก Sql Server ใช้ php ค่ะ รบกวนขอคำแนะนำจากพี่ๆ ด้วยค่ะ |
|
|
|
|
|
|
|
Field type เป็นะไรครับ
Nvarchar
หรือ
Varchar
ภาษาไทยจะใช้ Unicode nvarchar
น่าจะผิดตั้งแต่นำข้อมูลเข้า
ถ้ายังแก้ไม่ได้ผมกลับบ้านก่อนจะสอนวิธี convert ให้
|
|
|
|
|
Date :
2017-10-18 19:02:54 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แสดงโค๊ดทั้งสองที่ ที่ได้และไม่ได้ มาดูหน่อยครับ คือถ้าได้ก็ควรจะได้ทั้งสองที่
น่าจะลองเปรียบเทียบ ทั้งสองที่ดูว่าอะไรต่างกัน
และก็ขอดูโค๊ดที่เอาข้อมูลภาษาไทยเข้า database ด้วยครับ
|
|
|
|
|
Date :
2017-10-19 09:13:52 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ชื่อแสดงภาษาไทยได้ค่ะ
Code นะคะ
ประเภทชุด ต้องแสดงคำว่า ขาว หรือ ช่าง แต่ออกมาเป็น ???
Code นะคะ
set header
แสดงชื่อกับชุด อยู่ในหน้าเดียวกันนะคะ
อันที่เป็นหัวข้อคำถาม จะอยู่อีกหน้านึง ติดปัญหาเหมือนกันค่ะพี่
|
ประวัติการแก้ไข 2017-10-19 09:30:25 2017-10-19 09:33:43
|
|
|
|
Date :
2017-10-19 09:28:18 |
By :
natthanichaB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มี ssms ไหมครับ (sql server management tools)
เปิดตาราง ดูว่าอ่านไทยได้ทั้งสอง ฟีลด์ไหม
เอาตรงนี้ก่อนถ้า ssms อ่านไทยได้ทั้งสองฟีลด์ ก็ต้องดู fieldtype ของทั้งสอง ว่าเป็น nvarchar เหมือนกันไหม
ผมสงสัย แล้วชื่อไทยของตัวคุณเองเอาเข้าไปตอนไหน หรือเอาเข้าไปตรงๆ จาก ssms ไม่ได้ผ่าน php
|
ประวัติการแก้ไข 2017-10-20 05:05:38
|
|
|
|
Date :
2017-10-19 10:35:44 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เรามาทำความเข้าใจใหม่กันก่อนนะครับ ผมเองก็สับสนไม่ได้เจอปัญหานานแล้ว
และไม่ได้ใช้ odbc ซะด้วย ใช้แต่คำสั่ง sqlsrv พอดีไปเปิด ไฟล์เก่าๆ ของจริงดู
1 set charset ใน php_ini หรือ ใช้คำสั่ง (แนะนำให้ใช้คำสั่ง ไม่ต้องไปยุ่งกับ php.ini )
Code (PHP)
ini_set('mssql.charset', 'utf-8');
2 รูปแบบของ collation ไม่ว่าชนิดใด จะไม่มีผลกับ fieldtype 3 ตัวนี้ nvarchar, nchar, ntext
เพราะทั้ง 3 ตัวนี้เก็บข้อมูลในรูปแบบ unicode ซึ่งรองรับ ทุกภาษา ที่เป็น utf-8
3 ต้องนำเข้าข้อมูลโดยต้องมี N นำหน้าข้อมูลเพื่อบอกว่าเป็น unicode เช่น N'ข้อมูล ที่เป็น utf-8'
ใน ssms กรณีใช้ tools edit ใส่ให้อัตโนมัต
4 ต้องนำเสนอข้อมูลบน browser โดยกำหนด head meta charset='utf-8'
โดยไม่จำเป็นต้องใช้ iconv ในการแปลงข้อมูล เพราะข้อมูลเป็น utf-8 อยู่แล้ว
Code (PHP)
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
ที่นี้อยากศึกษา odbc_connect เกี่ยวกับกำหนด client charset เป็น utf-8 ลองดูตัวอย่างนี้
http://www.easysoft.com/support/kb/kb01072.html
|
|
|
|
|
Date :
2017-10-20 06:22:20 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
การใช้ iconv ถือว่ายังไม่ใช้วิธีที่ถูกต้องสำหรับภาษาไทยครับ
|
|
|
|
|
Date :
2017-10-20 13:29:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เพิ่ม N หน้าชื่อ Field ที่ Select ลองดูนะครับ
|
|
|
|
|
Date :
2017-10-20 14:46:43 |
By :
Krungsri |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จริงๆ ควรจะเช็คก่อนตอน insert นั้นใส่ N ไหม
จากนั้น เช็คไฟล์ php ว่า file encoding เป็น utf-8 อยู่หรือว่าเป็น ansi (western) แค่ header กำหนด char set มันไม่พอ
แม้แต่ไฟล์ที่เป็น form ส่งเข้ามา save ก็ต้องเป็น utf-8 ด้วย
รายละเอียดมันยิบย่อย แต่ถ้าเข้าใจมัน เราจะไม่เจอปัญหานี้อีกเลย
|
|
|
|
|
Date :
2017-10-22 03:09:48 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 10 เขียนโดย : natthanichaB เมื่อวันที่ 2017-10-20 12:02:00
รายละเอียดของการตอบ ::
ช่วยดูให้หน่อยได้มั้ยคะว่าต้องแก้ต้องไหนบ้าง เพราะตอนนี้ติดปัญหาเหมือนกัน
อันนี้เป็นcode insert SQL
Code (PHP)
$targetfolder = "upload/";
$targetfolder = $targetfolder . basename( $_FILES['file']['name']) ;
$ok=1;
$file_type=$_FILES['file']['type'];
echo $sql="insert into detail (topic,picture,datetime)
values ('$_POST[topic]','$filename','$time')";
$query = odbc_exec($link,$sql);
if ($file_type=="application/pdf" || $file_type=="image/gif" || $file_type=="image/jpeg") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $targetfolder)){
$filename = $_FILES['file']['name'];
$time= date('Y-m-d H:i:s');
echo $sql="insert into detail (topic,picture,datetime)
values ('$_POST[topic]','$filename','$time')";
$query = odbc_exec($link,$sql);
//exit;
?>
<script>
//alert('hello');
window.location.replace("http://192.168.0.120:8099/kulthorn/hp/filehr/management.php");
//return false;
</script>
<?php
}else {
echo "Problem uploading file";
}
}else {
//echo "You may only upload PDFs, JPEGs or GIF files.<br>";
}
$link->close;
ส่วนอีนนี้เป็นcode file connectค่ะ
Code (PHP)
<?php
$user = 'sa';
$pass = 'x5152535490';
$server = '192.168.0.120';
$database = 'hr_upload_file';
// No changes needed from now on
$connection_string = "DRIVER={SQL Server};SERVER=$server;DATABASE=$database;Client_CSet=UTF-8;Server_CSet=Windows-1251";
$link = odbc_connect($connection_string,$user,$pass);
if ($link) {
//echo "Connection established.";
} else{
die("Connection could not be established.");
}
?>
charset ใช้แบบนี้ค่ะ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
แก้หลายรอบละไม่ได้สักที
ถ้าไม่รบกวนขอดูโค๊ดได้ไหมจะได้นำไปประยุกต์
|
|
|
|
|
Date :
2018-08-18 08:34:11 |
By :
mewhappy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|