ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingช่วยหน่อยครับ PHP ดึงข้อมูลจาก SQL SERVER ออกมาเป็นภาษาต่างด้าว
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ช่วยหน่อยครับ PHP ดึงข้อมูลจาก SQL SERVER ออกมาเป็นภาษาต่างด้าว  (อ่าน 6525 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
id09318
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 282



ดูรายละเอียด
« เมื่อ: 03 พฤศจิกายน 2014, 19:15:04 »

 wanwan017
ข้อมูลใน SQL SERVER เป็นภาษาไทยครับ แต่พอดึงออกมาเป็น ʵҧ��
Database กำหนด Collation เป็น Thai_CI_AS

นี่คือฟังชั่นครับ
โค๊ด:
function topmoney($svname,$svuser,$svpass)
      {
            $dbnamesv = "xxx";
            $coninfo = array( "Database"=>$dbnamesv, "UID"=>$svuser, "PWD"=>$svpass);
            $conn = sqlsrv_connect( $svname, $coninfo);
            $sql="select top 15 * from TB_B1 ORDER BY TB_MONEY DESC";
            $result=sqlsrv_query($conn, $sql, array(), array("Scrollable"=>"buffered"));
            $c = 1;
           
            while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC) )
            {
                        if(!preg_match("/^@/",$row[CHARACTER_NAME] ))
                        {
                  echo '

                        <div class="row">
                             
                              <div class="col-xs-2">
                                    '.$c.'&nbsp;.&nbsp;'.$row['CHARACTER_NAME'].'
                              </div>
                             
                        </div>
                  ';
                         
                          $c++;
                         }

                 
            }

            sqlsrv_free_stmt($result);
            sqlsrv_close($conn);

      }

ตัวนี้แสดงผลครับ
โค๊ด:
<?php
    error_reporting
(0);
    include(
"config.php");
    include(
"functions.php");
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TEST</title>
</head>
<body>
<?php
topmoney
($svname,$svuser,$svpass)
?>

</body>
</html>
บันทึกการเข้า

มีแต่วันนี้ที่มีค่า ไม่มีวันหน้าและวันหลัง.
wasantec
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 586
ออฟไลน์ ออฟไลน์

กระทู้: 2,613



ดูรายละเอียด
« ตอบ #1 เมื่อ: 03 พฤศจิกายน 2014, 19:20:23 »

ลองเปลี่ยนเป็น UTF-8 Unicode (utf8)
บันทึกการเข้า
id09318
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 282



ดูรายละเอียด
« ตอบ #2 เมื่อ: 03 พฤศจิกายน 2014, 19:22:56 »

ลองเปลี่ยนเป็น UTF-8 Unicode (utf8)

เปลี่ยนแล้วครับท่าน! ไม่หาย  Tongue
« แก้ไขครั้งสุดท้าย: 03 พฤศจิกายน 2014, 19:26:35 โดย id09318 » บันทึกการเข้า

มีแต่วันนี้ที่มีค่า ไม่มีวันหน้าและวันหลัง.
nattapol196
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 167



ดูรายละเอียด
« ตอบ #3 เมื่อ: 03 พฤศจิกายน 2014, 19:37:13 »

mysql_query("set NAMES utf8 ");

ก่อน $sql="select top 15 * from TB_B1 ORDER BY TB_MONEY DESC";

ครับ
บันทึกการเข้า
id09318
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 282



ดูรายละเอียด
« ตอบ #4 เมื่อ: 03 พฤศจิกายน 2014, 20:08:14 »

mysql_query("set NAMES utf8 ");

ก่อน $sql="select top 15 * from TB_B1 ORDER BY TB_MONEY DESC";

ครับ

ใส่แล้วครับ ไม่หายครับ  Lips Sealed
« แก้ไขครั้งสุดท้าย: 03 พฤศจิกายน 2014, 20:10:49 โดย id09318 » บันทึกการเข้า

มีแต่วันนี้ที่มีค่า ไม่มีวันหน้าและวันหลัง.
gulmiku
ก๊วนเสียว
*

พลังน้ำใจ: 34
ออฟไลน์ ออฟไลน์

กระทู้: 339



ดูรายละเอียด
« ตอบ #5 เมื่อ: 03 พฤศจิกายน 2014, 20:44:28 »

mysql_query("set NAMES utf8 ");

ก่อน $sql="select top 15 * from TB_B1 ORDER BY TB_MONEY DESC";

ครับ

ใส่แล้วครับ ไม่หายครับ  Lips Sealed

ใส่ต่อบรรทัด connect เข้าสู่ db เลยนะครับ
บันทึกการเข้า

รับทำ theme wordpress เริ่มต้นที่ 8,000 บ.
รับเขียนระบบเว็บไซต์ เริ่มต้นที่ 10,000บ.
รับแก้งาน แก้บัค , เขียน scripts อื่นๆ,เขียน plugin wordpress
สนใจ PM ครับ
id09318
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 282



ดูรายละเอียด
« ตอบ #6 เมื่อ: 03 พฤศจิกายน 2014, 20:47:30 »

ใส่ต่อบรรทัด connect เข้าสู่ db เลยนะครับ

ใส่แล้วครับ ไม่หายครับ ต่างด้าวอยู่  wanwan004
บันทึกการเข้า

มีแต่วันนี้ที่มีค่า ไม่มีวันหน้าและวันหลัง.
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 04 พฤศจิกายน 2014, 16:48:07 »

หน้าเว็บนี้ ที่ browser ของผม ผมลองเปลี่ยนมุมมองจาก UTF-8 เป็น Thai พบคำว่า สตาง ซึ่งน่าจะเป็นข้อความสกุลเงิน
ผมแกะดูจาก HTML source แล้วเป็นเลขฐานสิบหก CAB5 D2A7 EFBF BDEF BFBD

ลอง

โค๊ด:
print convert(varchar(10), 0xCAB5D2A7EFBFBDEFBFBD)
หน่อยซิครับ

แล้ว column CHARACTER_NAME เป็น varchar หรือ nvarchar ครับ หรือว่าเป็นอย่างอื่น
บน Microsoft SQL Server ชอบใช้ UTF-16/UCS-2 ไม่ใช่ UTF-8 ซะด้วยซิ

« แก้ไขครั้งสุดท้าย: 04 พฤศจิกายน 2014, 16:59:52 โดย ohmohm » บันทึกการเข้า
goodwide
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 1,432



ดูรายละเอียด
« ตอบ #8 เมื่อ: 04 พฤศจิกายน 2014, 17:09:41 »

โค๊ด:
<meta http-equiv=Content-Type content="text/html; charset=tis-620">

ช่วยได้ไหม
บันทึกการเข้า
ReleaseCandidate
คนรักเสียว
*

พลังน้ำใจ: 43
ออฟไลน์ ออฟไลน์

กระทู้: 181



ดูรายละเอียด
« ตอบ #9 เมื่อ: 04 พฤศจิกายน 2014, 17:42:56 »

ที่ /etc/mysql/my.cnf
โค๊ด:
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
character-set-server = utf8

restart mysql แล้วเช็ค mysql status
ถ้าได้แบบนี้ที่ mysql ก็น่าจะโอเคล่ะ
โค๊ด:
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

ที่ php.ini
โค๊ด:
default_charset = "UTF-8"

ที่ webserver ก็ควร set ให้เป็น utf8 ด้วย
# nginx
โค๊ด:
charset utf-8;
# apache
โค๊ด:
AddDefaultCharset UTF-8

ลองดูนะครับ wanwan019
บันทึกการเข้า

id09318
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 282



ดูรายละเอียด
« ตอบ #10 เมื่อ: 04 พฤศจิกายน 2014, 23:57:20 »

ที่ /etc/mysql/my.cnf
โค๊ด:
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
character-set-server = utf8

restart mysql แล้วเช็ค mysql status
ถ้าได้แบบนี้ที่ mysql ก็น่าจะโอเคล่ะ
โค๊ด:
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

ที่ php.ini
โค๊ด:
default_charset = "UTF-8"

ที่ webserver ก็ควร set ให้เป็น utf8 ด้วย
# nginx
โค๊ด:
charset utf-8;
# apache
โค๊ด:
AddDefaultCharset UTF-8

ลองดูนะครับ wanwan019

ของผมเป็น MSSQL ครับ
บันทึกการเข้า

มีแต่วันนี้ที่มีค่า ไม่มีวันหน้าและวันหลัง.
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 05 พฤศจิกายน 2014, 10:19:05 »

ตรง
โค๊ด:
$row['CHARACTER_NAME']

ลองเปลี่ยนเป็น
โค๊ด:
iconv('CP874', 'UTF-8', $row['CHARACTER_NAME'])

ดูซิครับ ถ้าไม่ได้ผลลอง เปลี่ยนตรง cp874 เป็นตัวเลือกอื่นๆ เช่น windows-874, ISO-8859-11, TIS-620 หรือ MacThai
บันทึกการเข้า
id09318
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 282



ดูรายละเอียด
« ตอบ #12 เมื่อ: 05 พฤศจิกายน 2014, 17:43:31 »

ตรง
โค๊ด:
$row['CHARACTER_NAME']

ลองเปลี่ยนเป็น
โค๊ด:
iconv('CP874', 'UTF-8', $row['CHARACTER_NAME'])

ดูซิครับ ถ้าไม่ได้ผลลอง เปลี่ยนตรง cp874 เป็นตัวเลือกอื่นๆ เช่น windows-874, ISO-8859-11, TIS-620 หรือ MacThai

ได้แล้วครับ ขอบคุณมากครับ  wanwan017 wanwan017 wanwan017 +1คับ
บันทึกการเข้า

มีแต่วันนี้ที่มีค่า ไม่มีวันหน้าและวันหลัง.
nong4534
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 91
ออฟไลน์ ออฟไลน์

กระทู้: 1,453



ดูรายละเอียด
« ตอบ #13 เมื่อ: 06 พฤศจิกายน 2014, 10:31:15 »

ปัญหาเดียวกันเลย ขอบคุณครับ
บันทึกการเข้า

Rangforever แจกโค้ดตัวอย่างโปรเจคPHPฟรี(เขียนโปรแกรมphp java C#)
PHP Future เขียนโปรแกรมภาษาphp (แจกโปรเจคฟรี แหล่งเรียนรู้ไอที เทคโนโลยี)
หน้า: [1]   ขึ้นบน
พิมพ์