|
|
|
ขอสอบถามวิธีแก้หน่อยค่ะ ฐานข้อมูลภาษาเป็น latin1_swedish_ci ดึงข้อความภาษาไทยมาแสดงอ่านไม่ออกเลยค่ะ มีวิธีแก้ไหมค่ะ |
|
|
|
|
|
|
|
ต้องเปลี่ยนไปใช้แบบ utf8 ครับ
|
|
|
|
|
Date :
2016-10-05 15:34:50 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วตัวโค้ดละครับได้กำหนดให้เป็น utf8 รึเปล่า
|
|
|
|
|
Date :
2016-10-05 16:50:09 |
By :
stepartz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เยอะก็ต้อง ทยอยทำ เขียน code ดีดี ทำใน phpmyadmin (ถ้าใช้) หรือ สร้างระบบเปลี่ยนตัวแปรชื่อตาราง ข้อมูลไปเรื่อย ๆ ง่ายกว่า เร็วกว่า คิวรี่ select แล้วมา insert ไม่น่าจะกินเวลาเยอะครับ ลองรอดูคุณ zarooman ดูก่อนก็ได้ครับ
|
|
|
|
|
Date :
2016-10-06 16:48:48 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ข้อมูลเยอะไหม ถ้า export แล้วไม่เกิน 10 เมก ส่งมาให้ผมลองแปลงให้ไหม?
|
|
|
|
|
Date :
2016-10-06 21:43:03 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ออกแบบ Table ด้วย UTF-8 จะต้องใช้การ Export/Import เป็น Collation เก่าก่อนครับ
|
|
|
|
|
Date :
2016-10-07 08:33:09 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น่าจะลองทำเองดูก่อนนะครับ จะได้ความรู้เพิ่ม
ขั้นตอน
1 export เฉพาะ structure ออกมาเป็น ไฟล์ .sql
2 เข้าไปแก้ไข ไฟล์ .sql เปลียน collation จาก latin_swedish_ci เป็น utf8_unicode_ci โดยใช้เครื่องมือ replace
3 สร้าง database ใหม่ กำหนด collation เป็น utf8_unicode_ci
4 import ตาราง ด้วย file .sql ที่แก้นั้น กับ database ใหม่
5 เขียนโปรแกรม php ตามตัวอย่างข้างล่าง
Code (PHP)
class db_tis_2_utf{
public $tis;
public $utf;
public function __construct( $host, $user, $paswd, $tis,$utf){
$this->tis = new mysqli($host, $user, $paswd, $tis);
$this->tis->set_charset('tis620');
$this->utf = new mysqli($host, $user, $paswd, $utf);
$this->utf->set_charset('utf8');
$this->convert();
}
public function convert(){
$rs=$this->tis->query('show tables');
$tbs=$rs->fetch_all();
foreach($tbs as $ro){ $this->transfer($ro[0]); }
}
private function transfer( $tb ){
$rs=$this->tis->query('select * from '.$tb);
$flds = $rs->fetch_fields();
//////////
while($ro=$rs->fetch_assoc()){
$sql = 'insert into '.$tb.' ';
foreach ($flds as $key=>$val) {
$nm=$val->name; $vl=$ro[$nm];
switch($val->type){
case 253: case 254: case 255: // varchar
$value = iconv('tis620', 'utf8', $vl);
$sql .= ($key>0? "," : 'set')." $nm='$value' ";
break;
case 249: case 250: case 251: // blob
$value = bin2hex($vl); $x = strlen($value)? '0x'.$value : "''";
$sql .= ($key>0? "," : 'set')." $nm=$x ";
break;
default: // number, date etc.
$sql .= ($key>0? "," : 'set')." $nm='$vl' ";
break;
}
}
$this->utf8->query($sql);
}
unset($rs); unset($flds);
}
}
$z = new db_tis_2_utf('host','user','psw','dbtis', 'dbutf');
ปล.
โค๊ดตามตัวอย่าง ยังไม่ได้เทสต์
ข้อจำกัด
1 อาจจะเออเร่อร์ ถ้า ตารางมีจำนวนเรคอร์ด มากๆ เกินหน่วยความจำ ทำ loop กำหนด limit pagination เอาเองนะครับ
2 ไม่ได้ ตรวจสอบ field type ประเภท enum set ถ้ามีภาษาไทย ก็จัดการเอาเองครับ
3 timeout ไม่ได้กำหนด เพราะไม่รู้วาจำเป็นหรือไม่ ถ้า database ใหญ่ก็กำหนดความเหมาะสมเอาเองครับ
ยังไงก็ประยุกต์เอาเองนะครับ
จะไม่พยายามเขียนให้หมด อย่างน้อยต้องแก้ไขบ้าง จะแก้ไขได้ก็ต้องอ่านทำความเข้าใจกับโค๊ดก่อน
|
ประวัติการแก้ไข 2016-10-07 10:09:41 2016-10-07 10:11:50 2016-10-07 14:12:39
|
|
|
|
Date :
2016-10-07 10:04:11 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใช้ encode windows-874 ในหน้าเวบครับ
แล้วดึงข้อมูลมาแสดงครับ น่าจะอ่านภาษาไทยได้
|
|
|
|
|
Date :
2016-10-07 11:01:03 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 19 เขียนโดย : naim เมื่อวันที่ 2020-10-21 13:06:30
รายละเอียดของการตอบ ::
ไม่ 100% แต่ที่เหลือเหมือนเติมคำในช่องว่าง
เนื่องจากเป็นข้อมูลส่วนบุคคลไม่สามารถเปิดเผยได้
จึงบอกวิธีแปลง code page แทน
ข้อมูลจะมีสองส่วน
ส่วนแรกเปิดไฟล์ด้วย web browser เปลี่ยน Encoding -> UTF-8
แล้วคัดลอกส่วนภาษาไทยที่สมบูรณ์ไว้
ส่วนที่สอง ทำเหมือนส่วนแรก แต่คัดลอกส่วนที่แสดงเป็นภาษาต่างด้าว
ไปแปลง codepage จาก Windows-1252 -> UTF-8
จะได้ภาษาไทย เกือบสมบูรณ์
สุดท้ายนำผลทั้งสองส่วนมารวมกันแล้วบันทึกเป็นไฟล์ .sql ใหม่
|
|
|
|
|
Date :
2020-10-21 23:24:48 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
html::
<!doctype html>
<head>
<meta charset="utf-8">
php
$con=new mysqli(......);
$con->set_charset('utf-8');
|
|
|
|
|
Date :
2020-10-22 05:32:19 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|