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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingการนับจำนวนตัวอักษรภาษาไทย โดย ไม่นับ สระ และ สัญลักษณ์ ต่างๆ ทำยังไงคะ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: การนับจำนวนตัวอักษรภาษาไทย โดย ไม่นับ สระ และ สัญลักษณ์ ต่างๆ ทำยังไงคะ  (อ่าน 6332 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
puiiz_zz
Verified Seller
สมุนแก๊งเสียว
*

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

กระทู้: 508



ดูรายละเอียด
« เมื่อ: 05 กุมภาพันธ์ 2012, 15:13:41 »

ลองหาโค้ด ใน google มาทดสอบหมดแล้ว

แต่มันนับ ไม่ตรง อะคะ

เช่น พิมพ์ " ส " มันนับได้ 3 character

ลองใช้โค้ด ตามเว็บแล้ว มัน ก็ไม่ได้ ช่วยทีนะคะ

ใช้โค้ดนี้ไปคะ

http://www.it4x.com/forum/index.php/topic,8328.0.html

http://www.thaicreate.com/php/forum/036413.html

http://moshikub.com/strlen-php...8%A7%E0%B8%B2%E0%B8%A1-string/

http://necz.net/2011/09/20/php...B4%E0%B9%80%E0%B8%A8%E0%B8%A9/



จุดประสงค์คือต้องการจัด นับตัวอักษรทั้งหมดในข้อความ รวมทั้ง ตัวอักษรภาษาไทยด้วย
โดยจะไม่นับ สระ อะ อา อิ อี และ วรรณยุกต์ เอกโท ตรี จัตวา

และ ไม่นับ อักษรพิเศษ symbol

แต่ พอลอง ใช้โค้ดที่ได้มาในเวบแล้ว
มันนับตัวอักษรภาษาไทยผิดอะคะ แต่นับตัวอักษรอังกฤษได้ถูกต้อง

แล้วแต่ละ โค้ด การ encode ต่างกันอีก -*-

ข้อมูลที่เรียกมานับ คือข้อมูลใน ฐานข้อมูล
ซึ่งในฐานข้อมูลใช้ tis-20

แต่ในหน้า page ใช้ window874


ใครพอมีโค้ด หรือแนะนำได้บ้างคะ

ต้องใช้งานด่วนเลยช่วยที



บันทึกการเข้า
thai2ads
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,169



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 05 กุมภาพันธ์ 2012, 17:10:43 »

mb_strlen();

ตัวอย่าง
$text="ทดสอบ";
echo mb_strlen($text);
บันทึกการเข้า

รับทำเว็บไซต์ เขียนระบบต่างๆตามที่ต้องการ (ยกเว้น 18+ กับการพนัน) ระบบมีปัญหาการใช้งานแจ้งพจได้เลยนะครับอย่าได้เกรงใจเพราะเดี๋ยวมันจะไม่รู้ปัญหา
ออกแบบเว็บไซต์ | รับทำเว็บไซต์ |
MeenyFancy
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,270



ดูรายละเอียด
« ตอบ #2 เมื่อ: 05 กุมภาพันธ์ 2012, 22:03:57 »

เอาแบบบื้อๆ เลยนะ str_replace ก่อนครับ
โค๊ด:
<?php
$text
=" ส@#กี ";
$t2 str_replace(' ','',$text);
$t2 str_replace('ี','',$t2);
$t2 str_replace('@','',$t2);
$t2 str_replace('#','',$t2);
echo 
mb_strlen($t2);
?>

result
โค๊ด:
2
บันทึกการเข้า

Splendith
คนรักเสียว
*

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

กระทู้: 152



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 05 กุมภาพันธ์ 2012, 23:44:20 »

ไม่รู้ว่าผมเข้าใจถูกหรือเปล่านะครับ

อันนี้ผมเขียนโค้ดขึ้นมาแล้วทดสอบโดยฐานข้อมูลใช้ tis-620 / หน้า page ใช้ windows-874 ลองใช้แล้วไม่มีปัญหา
ผมทำแบบตัดสระและวรรณยุกต์ออกทั้งหมดนะครับ (ไม่ชัวร์ว่าที่คุณพูดว่าสระ อะ อา อิ อี นั้นตัดแค่ 4 สระหรือตัดทุกสระ เพราะเห็นหัวข้อกระทู้บอกให้ไม่นับสระ *0*)

โค๊ด:
function th_strlen($str)
{
$new = preg_replace('/[^0-9A-Za-zก-ฮ๐-๙]/','',$str); // ตัดทุกอย่างนอกเหนือขอบเขตที่ระบุไว้ทิ้ง
return strlen($new);
}

echo th_strlen("ตู้ไม้ที่บ้านเอียงจ้ะABC   123+-*#"); // ได้ 15 (นับเพียง "ตมทบนอยงจABC123" )

ถ้ามีปัญหาใดๆ บอกนะครับผม  wanwan019
« แก้ไขครั้งสุดท้าย: 05 กุมภาพันธ์ 2012, 23:56:37 โดย Splendith » บันทึกการเข้า

puiiz_zz
Verified Seller
สมุนแก๊งเสียว
*

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

กระทู้: 508



ดูรายละเอียด
« ตอบ #4 เมื่อ: 06 กุมภาพันธ์ 2012, 00:37:18 »

ไม่รู้ว่าผมเข้าใจถูกหรือเปล่านะครับ

อันนี้ผมเขียนโค้ดขึ้นมาแล้วทดสอบโดยฐานข้อมูลใช้ tis-620 / หน้า page ใช้ windows-874 ลองใช้แล้วไม่มีปัญหา
ผมทำแบบตัดสระและวรรณยุกต์ออกทั้งหมดนะครับ (ไม่ชัวร์ว่าที่คุณพูดว่าสระ อะ อา อิ อี นั้นตัดแค่ 4 สระหรือตัดทุกสระ เพราะเห็นหัวข้อกระทู้บอกให้ไม่นับสระ *0*)

โค๊ด:
function th_strlen($str)
{
$new = preg_replace('/[^0-9A-Za-zก-ฮ๐-๙]/','',$str); // ตัดทุกอย่างนอกเหนือขอบเขตที่ระบุไว้ทิ้ง
return strlen($new);
}

echo th_strlen("ตู้ไม้ที่บ้านเอียงจ้ะABC   123+-*#"); // ได้ 15 (นับเพียง "ตมทบนอยงจABC123" )

ถ้ามีปัญหาใดๆ บอกนะครับผม  wanwan019



สงสัยจะมีปัญหา กับการ Encode แน่เลยคะ    ลองโค้ดที่ให้มาใช้ได้ปกติเลย นับได้ปกติ

แต่ปัญหาที่เจอคือ พอเอาไปใช้งานจริง  ในหน้า ที่ใส่ฟังชั่น ทำการ ใส่ไว้แบบนี้

print '<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />';

จากนั้น ก็ทำการ

include('../config.php');
include('../account/account.php');
mysql_query(" SET NAMES UTF8");


แล้ว พอมันไปใช้งานฟังชั่น
ก็จะให้ทำการดึงข้อมูลที่จะ นับจำนวนคำมาจากฐานข้อมูล ซึ่ง ได้มีการตั้งใส่ส่วนนี้ไว้เป็น tis-620

พอฟังชั่น นับจำนวนคำทำงาน

ลองพิมพ์แค่ตัวอักษร    "ด" = แต่มัน นับ ได้ 3 character

ใครก็ได้ช่วยที แก้ยังไงได้บ้างคะ

ลองแก้ ตรง   mysql_query(" SET NAMES UTF8");  เป็น tis620 และ windows-874  แล้ว ก็ยังนับไม่ถูกต้อง
บันทึกการเข้า
talon
ก๊วนเสียว
*

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

กระทู้: 244



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 06 กุมภาพันธ์ 2012, 01:26:29 »

เดา ๆ เอานะครับว่าเป็นเพราะใน DB เป็น UTF-8 ครับ

strlen simply counts the number of bytes in a string, not the number of characters.
This means for UTF-8 the integer it returns is actually longer than the number of characters in the string.

strlen จะนับจำนวนไบท์ ไม่ได้นับจำนวนตัวอักษร
นั่นหมายความว่า สำหรับ UTF-8 ค่าตัวเลขที่ได้รับจาก strlen จะยาวกว่า จำนวนตัวอักษร


ลองใช้ function เปลี่ยนจาก utf-8 เป็น tis-620 ก่อนครับแล้วค่อยใช้ ฟังก์ช้นของคุณ Splendith นับค่าเอาครับ

โค๊ด:
$str = th_strlen(utf8_to_tis620($str));

function th_strlen($str)
{
$new = preg_replace('/[^0-9A-Za-zก-ฮ๐-๙]/','',$str); // ตัดทุกอย่างนอกเหนือขอบเขตที่ระบุไว้ทิ้ง
return strlen($new);
}
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;
}
บันทึกการเข้า

puiiz_zz
Verified Seller
สมุนแก๊งเสียว
*

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

กระทู้: 508



ดูรายละเอียด
« ตอบ #6 เมื่อ: 06 กุมภาพันธ์ 2012, 02:25:50 »

เดา ๆ เอานะครับว่าเป็นเพราะใน DB เป็น UTF-8 ครับ

strlen simply counts the number of bytes in a string, not the number of characters.
This means for UTF-8 the integer it returns is actually longer than the number of characters in the string.

strlen จะนับจำนวนไบท์ ไม่ได้นับจำนวนตัวอักษร
นั่นหมายความว่า สำหรับ UTF-8 ค่าตัวเลขที่ได้รับจาก strlen จะยาวกว่า จำนวนตัวอักษร


ลองใช้ function เปลี่ยนจาก utf-8 เป็น tis-620 ก่อนครับแล้วค่อยใช้ ฟังก์ช้นของคุณ Splendith นับค่าเอาครับ

โค๊ด:
$str = th_strlen(utf8_to_tis620($str));

function th_strlen($str)
{
$new = preg_replace('/[^0-9A-Za-zก-ฮ๐-๙]/','',$str); // ตัดทุกอย่างนอกเหนือขอบเขตที่ระบุไว้ทิ้ง
return strlen($new);
}
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;
}

ข้อมูลใน DB มันเป็น Tis-620 อยู่แล้วนะคะ
แต่ หน้าที่ ใช้งานฟังชั่น


include('../config.php');
include('../account/account.php');
mysql_query(" SET NAMES UTF8");


ถ้าลองเปลี่ยนจาก  SET NAMES TIS620  ค่าที่ได้มันเปลี่ยนไป คะ มันเพิ่มขึ้นเป็น 8 9 char บางที อ่านไม่ออกเลย
บันทึกการเข้า
WPDSign
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 9,059



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 06 กุมภาพันธ์ 2012, 02:45:47 »

ขอเก็บความรู้ครับ เดี่ยวว่างๆมาอ่าน อ่านได้นิดเริ่มลึก
บันทึกการเข้า

สร้างบ้าน Modern แบบบ้านโมเดิร์น มาแรง
» ต้องการสร้างบ้านดูแบบบ้านสวยๆ แบบบ้านสองชั้น ทุกสไลต์บริการรับสร้างบ้าน ใครฝันอย่างสร้างบ้านสไตล์รีสอร์ท มีแบบบ้านสไตล์รีสอร์ท พร้อมก่อสร้าง ลงประกาศขายบ้านที่ HOUSE PLANS
talon
ก๊วนเสียว
*

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

กระทู้: 244



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 06 กุมภาพันธ์ 2012, 03:00:23 »

ไฟล์ php ของคุณ save ด้วย utf8 format ครับ
ถ้าเปลี่ยน save เป็น ANSI จะใช้ function strlen ได้ตามปกติ

หรือถ้าอยากใช้ utf8 เหมือนเดิม ก็เอาฟังก์ช้นใน rep ที่แล้วของผมมาใช้ครับ
ตะกี๊ทดสอบแล้ว ใช้ได้แน่นอน
บันทึกการเข้า

puiiz_zz
Verified Seller
สมุนแก๊งเสียว
*

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

กระทู้: 508



ดูรายละเอียด
« ตอบ #9 เมื่อ: 06 กุมภาพันธ์ 2012, 04:13:57 »

ไฟล์ php ของคุณ save ด้วย utf8 format ครับ
ถ้าเปลี่ยน save เป็น ANSI จะใช้ function strlen ได้ตามปกติ

หรือถ้าอยากใช้ utf8 เหมือนเดิม ก็เอาฟังก์ช้นใน rep ที่แล้วของผมมาใช้ครับ
ตะกี๊ทดสอบแล้ว ใช้ได้แน่นอน


โค๊ด:

<?php
set_time_limit
(0);

ob_start();
error_reporting (E_ALL E_NOTICE E_DEPRECATED); 


header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");

//print '<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />';
//print '<meta http-equiv="Content-Type" content="text/html; charset=tis-620"/> ';
print '<meta http-equiv="Content-Type" content="text/html; charset=UTF8" />';

mysql_query(" SET NAMES UTF8");

function checkPost($message,$allMessageWords )
{
$msgLength = strlenth($str);
}



function 
strlenth($str)
{
$arr str_split($str);
$count 0;
foreach(
$arr as $val)
{
$ascii ord($val);
if(!( 
$ascii == 209 || ($ascii >= 212 && $ascii <= 218 ) || ($ascii >= 231 && $ascii <= 238 )))
$count += 1;
}
return 
$count;
}

?>



ช่วยดูให้ทีคะ  โค้ดเป็นแบบนี้  ตอนนี้มันก็ยังไม่ได้
บันทึกการเข้า
aek26
สมุนแก๊งเสียว
*

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

กระทู้: 572



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 06 กุมภาพันธ์ 2012, 08:19:15 »

เยี่ยมครับ ขอมาร์ไว้หน่อยครับ
บันทึกการเข้า

เพราะแสวงหา มิใช่เพราะรอคอย เพราะเชี่ยวชาญ มิใช่เพราะโอกาส เพราะสามารถ มิใช่เพราะโชคช่วย ดังนี้แล้ว "ลิขิตฟ้าหรือจะสู้มานะตน"
พวงกุญแจ
พวงกุญแจอะคริลิค
พวงกุญแจไม้
ของชำร่วย
Splendith
คนรักเสียว
*

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

กระทู้: 152



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 06 กุมภาพันธ์ 2012, 12:46:49 »

ขอโค้ดตอนคุณเรียกข้อมูลจากฐานข้อมูลทีครับ แล้วเวลา echo ข้อมูลออกมาเป็นภาษาต่างดาวหรือปกติครับ
ดูโค้ดที่ให้มาแล้วงงๆ ไม่รู้ว่าอยู่ส่วนไหนของโปรแกรม  Tongue

คำสั่ง mysql_query("SET NAMES UTF8");
ต้องใช้หลังคำสั่ง mysql_connect นะครับ

ถ้าใช้ UTF8 โค้ดฟังชั่นก็จะประมาณนี้
โค๊ด:
function th_strlen($str)
{
$new = preg_replace('/[^0-9A-Za-zก-ฮ๐-๙]/u','',$str); // ตัดทุกอย่างนอกเหนือขอบเขตที่ระบุไว้ทิ้ง
return mb_strlen($new, 'UTF8');
}

อันนี้คือตัวอย่างไฟล์เต็มๆ ที่ผมลองแล้วปกติครับ

โค๊ด:
<?

echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';

//-------------- อาจอยู่ใน config.php -------------------
mysql_connect("localhost","---","---");
mysql_select_db("---");
mysql_query("SET NAMES UTF8");

//-------------- อาจอยู่ในไฟล์อื่น -------------------------
function th_strlen($str)
{
$new = preg_replace('/[^0-9A-Za-zก-ฮ๐-๙]/u','',$str); // ตัดทุกอย่างนอกเหนือขอบเขตที่ระบุไว้ทิ้ง
return mb_strlen($new, 'UTF8');
}
//-----------------------------------------------------

$r = mysql_result(mysql_query("SELECT * FROM test"),0); // ดึงข้อความจากฐานข้อมูล
echo th_strlen($r);

?>
บันทึกการเข้า

talon
ก๊วนเสียว
*

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

กระทู้: 244



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 06 กุมภาพันธ์ 2012, 13:03:11 »

ไม่เกี่ยวกับข้อมูลใน DB ครับ
แต่เป็นการ save file script ของคุณ ซึ่งตอนที่คุณแก้ไขไฟล์ php script นั้น คุณ save เป็น utf-8 format
ซึ่งมีผลทำให้ function strlen เพี้ยน

วิธีแก้ก็เพิ่ม function ตามโค้ดข้างล่างนี่ครับ

โค๊ด:
<?php
set_time_limit
(0);

ob_start();
error_reporting (E_ALL E_NOTICE E_DEPRECATED); 


header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");

//print '<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />';
//print '<meta http-equiv="Content-Type" content="text/html; charset=tis-620"/> ';
print '<meta http-equiv="Content-Type" content="text/html; charset=UTF8" />';

mysql_query(" SET NAMES UTF8");

function checkPost($message,$allMessageWords )
{
$msgLength = strlenth(utf8_to_tis620($str));
}
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;
}


function 
strlenth($str)
{
$arr str_split($str);
$count 0;
foreach(
$arr as $val)
{
$ascii ord($val);
if(!( 
$ascii == 209 || ($ascii >= 212 && $ascii <= 218 ) || ($ascii >= 231 && $ascii <= 238 )))
$count += 1;
}
return 
$count;
}

?>


« แก้ไขครั้งสุดท้าย: 06 กุมภาพันธ์ 2012, 13:04:16 โดย talon » บันทึกการเข้า

talon
ก๊วนเสียว
*

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

กระทู้: 244



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 06 กุมภาพันธ์ 2012, 13:08:39 »

ออกตัวก่อนนะครับ ว่าไม่ได้เก่ง coding แค่พอรู้งู ๆ ปลา ๆ

เผอิญเคยอ่านเจอว่า การ save file เป็น utf8 จะำทำให้ขนาดไฟล์ใหญ่ขึ้น
เพราะ file  utf8 ใช้จำนวนไบท์ในการเก็บมากกว่า file แบบ ANSI 
มันก็เลยเอะใจน่ะครับ

ส่วน coding ที่เห็น ผมก็ถามอากู๋เอาทั้งนั้นแหละครับ แหะ ๆ ๆ
บันทึกการเข้า

puiiz_zz
Verified Seller
สมุนแก๊งเสียว
*

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

กระทู้: 508



ดูรายละเอียด
« ตอบ #14 เมื่อ: 06 กุมภาพันธ์ 2012, 18:19:15 »

ออกตัวก่อนนะครับ ว่าไม่ได้เก่ง coding แค่พอรู้งู ๆ ปลา ๆ

เผอิญเคยอ่านเจอว่า การ save file เป็น utf8 จะำทำให้ขนาดไฟล์ใหญ่ขึ้น
เพราะ file  utf8 ใช้จำนวนไบท์ในการเก็บมากกว่า file แบบ ANSI 
มันก็เลยเอะใจน่ะครับ

ส่วน coding ที่เห็น ผมก็ถามอากู๋เอาทั้งนั้นแหละครับ แหะ ๆ ๆ

คุณ talon เก่งมากๆเลยคะ

นั่งแก้ นั่งงม ตั้งนานคุณทำแปปเดียวได้ -*-


โดยวิธีแก้เป็นดังนี้คะ



ปกติ strlen() ถ้าจะใช้กับ string ที่เป็น utf8 จะต้องนำมา convert เป็น 
tis620 ด้วยฟังก์ชัน utf8_to_tis620()

ปัญหาในเคสนี้คือ  query เป็น UTF8 ด้วย mysql_query(" SET NAMES UTF8");
 
มันก็เลยเก็บค่าเป็น utf8 ไว้ ก็เลยต้องแก้ด้วยการ convert กลับมาเป็น Tis620 
ก่อน แล้วค่อยใช้ strlen() นับจำนวน
 

เป็นแนวทางเผื่อใครเจอปัญหาเหมือนกัน

^^ และสุดท้ายขอบคุณ Thaiseoboard และทุกคอมเม้นมากคะโดยเฉพาะคุณ talon
บันทึกการเข้า
Splendith
คนรักเสียว
*

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

กระทู้: 152



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 06 กุมภาพันธ์ 2012, 19:11:07 »

ยินดีด้วยครับที่แก้ปัญหาได้แล้ว  Smiley

แต่สิ่งที่ผมสงสัยอยู่คือ
ทำไมในครั้งแรกๆ ใช้ mysql_query(" SET NAMES TIS620"); บวกกับฐานข้อมูลที่ใช้ TIS620 และการแสดงผลเว็บ windows-874
แล้วทำไมถึงใช้ strlen ไม่ได้ หรือเป็นเพราะไฟล์ที่ encoding เป็น utf8 เท่านั้น


และอีกข้อหนึ่งคือ
อ้างถึง
ปัญหาในเคสนี้คือ  query เป็น UTF8 ด้วย mysql_query(" SET NAMES UTF8");

ที่ผมสงสัยคือทำไม mb_strlen(,"UTF8"); ถึงใช้งานไม่ได้ เพราะ mb_strlen มันใช้นับ Multibyte Charset ในตัวมันอยู่แล้ว

ใครรู้ตอบด้วยนะคร้าบ ขอบคุณครับ  wanwan017

« แก้ไขครั้งสุดท้าย: 06 กุมภาพันธ์ 2012, 19:18:16 โดย Splendith » บันทึกการเข้า

DigitalM
Newbie
*

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

กระทู้: 27



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 01 ตุลาคม 2017, 00:54:53 »

 wanwan017 wanwan017 wanwan017
บันทึกการเข้า

Digital Business & Technology  http://www.chakarin.com
หน้า: [1]   ขึ้นบน
พิมพ์