เขียน php ติดต่อฐานข้อมูล mssql ที่มี chartset เป็น tis-620
ลองใส่
@ header("Content-type: text/xml; charset=utf-8")
ดูครับผมมมีปัญหายังไงบอกด้วยครับเผื่อจะช่วยได้
Date :
2011-01-06 15:45:34
By :
gogo01
สามารถช่วยได้ครับ แต่ถ้า mssql ของเราเป็น tis-620 เราต้องยอมเสียหน้าเพจเราโดย encode เป็น windows-874 ก็จะใช้งานได้ แต่มันล้าสมัยครับ
Date :
2011-01-13 11:51:33
By :
nottp106
ถ้าอยากทันสมัยก็ แปลงฐานข้อมูลเก่าจาก tis-620 to utf-8 ซะ
แต่จริงๆ ถ้าเวลามีไม่มาก ก็ใช้แบบเดิมแหละดีแล้วและใช้ utf-8 เท่าที่จำเป็น
Date :
2011-01-13 12:15:37
By :
...
ใช้ utf-8 เท่าที่จำเป็น?
Date :
2011-01-13 13:10:05
By :
nottp106
ก็ถ้า tis620 ทำไม่ได้ก็ใช้ utf8 แทนไงครับ
อย่างส่งข้อมูลให้เว็บไซท์อื่นที่รับข้อมูล utf8
และหากต้องการแสดง utf8 ไว้หน้าเดียวกับ tis620 ได้ ก็แปลงข้อมูลก่อน
Date :
2011-01-13 13:29:20
By :
...
Code (PHP)
function tis620_to_utf8($tis) {
for( $i=0 ; $i< strlen($tis) ; $i++ ){
$s = substr($tis, $i, 1);
$val = ord($s);
if( $val < 0x80 ){
$utf8 .= $s;
} elseif ((0xA1 <= $val and $val <= 0xDA)
or (0xDF <= $val and $val <= 0xFB)) {
$unicode = 0x0E00 + $val - 0xA0;
$utf8 .= chr( 0xE0 | ($unicode >> 12) );
$utf8 .= chr( 0x80 | (($unicode >> 6) & 0x3F) );
$utf8 .= chr( 0x80 | ($unicode & 0x3F) );
}
}
return $utf8;
}
function utf8_to_tis620($string) {
$str = $string;
$res = "";
for ($i = 0; $i < strlen($str); $i++) {
if (ord($str[$i]) == 224) {
$unicode = ord($str[$i+2]) & 0x3F;
$unicode |= (ord($str[$i+1]) & 0x3F) << 6;
$unicode |= (ord($str[$i]) & 0x0F) << 12;
$res .= chr($unicode-0x0E00+0xA0);
$i += 2;
} else {
$res .= $str[$i];
}
}
return $res;
}
Date :
2012-01-25 14:52:52
By :
fossil31
ขอบคุณครับ
Date :
2012-07-19 14:59:37
By :
rachan
ขอบคุณ rith โพส 7 ครับ เจ๋งสุดดดดดดดดดดดดดดดดดด
Date :
2015-07-05 17:34:30
By :
bonparadorn
ผมใช้อยู่ครับ โดยวิธีการทำนั้นไม่อยากครับ แต่หน้า app เราจะต้อง encode เป็น windows-874 และ tis-620 ครับ
Config ของ php ไม่ต้องเปลี่ยนนะครับ และฟังก์ชัน iconv ก็ต้องใช้อยู่ครับ
1. เงื่อนไขแรก คุณต้องพัฒนาโปรแกรมด้วย windows ครับ และทุกไฟล์ที่ save ต้องบันทึกเป็น ANSI หรือ default windows ครับ
ถ้าใช้ server เป็น linux ค่อยโอนไฟล์ไปครับ
2. ไฟล์ที่เขียนเป็น .html ธรรมดา จะต้อง แปะตัวนี้ไว้ครับ
<meta http-equiv="Content-Type" content="text/html;Charset=windows-874" />
3. ไฟล์ที่เขียนเป็น .php จะต้อง แปะตัวนี้ไว้ครับ
header("Content-Type:text/html; charset=TIS-620");
4. ตัวแปลที่ส่งผ่าน session สามารถใช้ภาษาไทยได้เลยครับ
5. ตัวแปลที่ส่งผ่าน ajax จะต้องผ่าน iconv ครับ เช่น $_GET, $_POST ครับ ดังนี้ครับ
$q = iconv("UTF-8", "TIS-620", $_GET["q"]);
ถ้ามีการ encode จะต้อง decode ก่อนเข้าฟังก์ชัน iconv นะครับ เช่น
ส่งโดย return "" + urlData + "?q=" +encodeURIComponent(this.value);
เวลารับ $q = iconv("UTF-8", "TIS-620", urldecode($_GET["q"]));
รายละเอียดประมาณนีครับ ทดลองดูครับ
Date :
2015-09-02 09:50:14
By :
mrchok
ถึงฐานข้อมูลจะเป็น tis-620
แต่ไม่เข้าใจว่า ทำไมต้องกำหนดไฟล์ และ/หรือ charset เป็น Charset=windows-874 และ/หรือ charset=TIS-620
ในเมื่อใช้การแปลงค่าเหมือนเดิม
Date :
2015-09-02 10:00:04
By :
CasanovaKung
เคยเขียนแต่แบบ
file format "UTF-8"
<meta charset="uft-8" />
ส่งค่าผ่าน AJAX ปกติ
แล้วค่อย convert ค่าเอา
เช่น getdata.php
Code (PHP)
$value = iconv('utf-8', 'tis-620', $value);
// พอส่งกลับ
$return = iconv('tis-620', 'utf-8', $return);
แบบนี้
Date :
2015-09-04 15:51:22
By :
CasanovaKung
แบบนั้นก็ได้นะครับ
แต่อาจจะเกิดปัญหา ในไฟล์ .php ครับ
ตอนที่นำค่ามาสร้าง sql string แล้วส่งไปให้ mssql_query ครับ
อาจจะเกิด error หรือไม่ได้ข้อมูลตามที่ต้องการครับ
ต้องลองทดลองดูครับ
Date :
2015-09-04 16:10:59
By :
mrchok
Load balance : Server 05