การแสดงชื่อภาพยนตร์ และ Rating ของแต่ละเรื่อง จากฐานข้อมูลของ IMDB.COM

eight and a half
eight and a half

สคลิ๊ปอ่านข้อมูลจาก ratings.list แบบ plain text
ที่เผยแพร่โดย imdb.com
มาแสดงผลในเว็บเพจแบบตาราง แบ่งหน้าละ 50 รายการ
และมีลิงค์ค้น title ในฐานข้อมูล imdb.com ผ่านชื่อเรื่อง
โดยปรับภาษาให้แสดงตัวอักษรชื่อเรื่อง
ผ่าน html ที่ใช้รหัส ord() เพื่อแสดงอักษรพิเศษ
เช่นเรื่อง 8½ (1963) ในรายการที่ 230

BD = 189 = ฝ = one by two

notepad++ is free editor for programmer
notepad++ is free editor for programmer

การสั่งแสดงตัวอักษร ก ใน CP874 บน Webpage

มีโอกาสนั่งคุยกับนักศึกษา
เรื่องตัวเลข ฐานสิบ ฐานสิบหก และตาราง ASCII
พบตาราง Character Set ของคนไทย คือ Windows-874 หรือ TIS-620
หากจะแสดงเว็บเพจภาษาไทย
มักใช้ <meta http-equiv=”content-type” content=”text/html;charset=windows-874″ />
หรือ <meta charset=”tis-620″ />
แล้วสั่งแสดงตัวอักษร ก ด้วย &#3585; หรือพิมพ์ตรง ๆ ก็ได้
หากใช้ตัวเลข ก็แสดงว่า 3585 คือ ก
ซึ่งเป็นเลขสำหรับตัวอักษรภาษาไทยตัวแรก ในระบบ Unicode
แล้วพบว่าไม่สามารถแสดงด้วย &#161; หรือ &#xA1;
เพราะ Browser ไม่ได้รองรับ
อักษรพิเศษอื่น ๆ ที่ชวนมอง และมี Entity Name

อาทิ
&amp; = Ampersand
# = Number sign
# = Hashtag sign
# = Sharp sign

 

โฮมเพจที่น่าสนใจ
http://www.w3schools.com/charsets/ref_utf_symbols.asp
http://www.rakjung.com/facebook-no163.html
http://www.thailibrary.in.th/2014/02/13/char-set/
https://en.wikipedia.org/wiki/Code_page

อัพเกรดจาก php5.2.6 เป็น 5.4.45 ของ appserv

appserv version
appserv version

1. วันนี้ (1 ก.พ.59) อ.ตุ้ย แจ้งว่าเครื่องบริการเครื่องหนึ่ง
ลง appserv 2.5.10 ที่มีรุ่นของ php เป็น 5.2.6
ซึ่งเป็น appserv รุ่นล่าสุด ที่มี php รุ่น 5
แต่รุ่นถัดมาคือ appserv 8.0 ใช้ php รุ่น 5.6.17 กับ 7.0.2
ซึ่งผมไม่เลือกการลง appserv รุ่นใหม่ เพราะ php ใหม่เกินไป

https://www.appservnetwork.com/en/

appserv 2.5.10 to 8.0.0
appserv 2.5.10 to 8.0.0

2. จุดเริ่มต้น เกิดจากคุณเปรม พบปัญหาในการพัฒนาระบบ
ต้องการส่งอีเมลเป็นภาษาจีนพร้อมภาษาไทย พบปัญหา
โดยฟังก์ชัน mail ส่งข้อมูลไปแล้ว
มีปัญหาไม่แสดงผลภาษาจีนร่วมกับภาษาไทยใน gmail คือ ภาษาจีนหายไปเฉย ๆ
วิธีหนึ่งที่แก้ไขได้คือแปลภาษาจีนที่เป็น unicode เป็น html entities
http://unicode.online-toolz.com/tools/unicode-html-entities-convertor.php

services.msc on WinXP
services.msc on WinXP

3. การแปลง unicode เป็น html entities ใช้ฟังก์ชันง่าย ๆ ได้เลย
โดยใช้ preg_replace_callback แล้วสร้างฟังก์ชันภายในฟังก์ชัน
แต่ php 5.2 ไม่ยอมรับฟังก์ชันแบบนี้
http://stackoverflow.com/questions/13280200/convert-unicode-to-html-entities-hex
คุณซันก็แนะนำ create_function ซึ่งก็น่าสนใจ
ที่ http://php.net/manual/en/function.create-function.php

sha1 คือ ค่า checksum ของแฟ้มที่ download มา
sha1 คือ ค่า checksum ของแฟ้มที่ download มา

4. วิธีที่ผมเลือกแก้ปัญหานี้ คือการ upgrade php จาก 5.2.6 เป็น 5.4.45
ซึ่งความต่างของรุ่น น่าจะกระทบ code ทั้งระบบน้อยกว่าการลง 5.6.17 กับ 7.0.2

– download php 5.4.45 ที่เป็น thread safe for windows มาแตก zip
– stop service ของ apache
– backup php ไว้ก่อน
– copy แฟ้มที่แตกไว้ เข้าห้อง php
– start service ของ apache
– ใช้ phpinfo() ตรวจรุ่นของ php
– ทดสอบ script ใน server ทั้งหมด
– ถ้ามีปัญหา ก็ copy php ที่ backup ไว้ กลับมาทับห้องเดิม
– กลับไปแก้ script ใน server ทั้งหมดให้ทำงานกับ php version ใหม่
– แล้วค่อยย้อนขั้นตอนข้างบนอีกครั้ง
* script ในเครื่องมี programer สัก 4 คนได้มังครับ

5. เลขรุ่นของ appserv ขยับจาก 2.5.10 มาเป็น 8.0.0 ข้ามเลขไปหลายตัว
คาดว่า เพราะเวลาในการพัฒนามีน้อย และมีงานประจำต้องทำ
ผมเองก็พัฒนา thaiabc.com ก็มีแนวคิดคล้าย appserv
นี่ก็หยุดอัพเวอร์ชั่น ไปหลายปีแล้วเหมือนกัน
http://www.thaiabc.com

https://www.facebook.com/media/set/?set=a.10153893646492272.1073741911.350024507271

เปรียบเทียบเนื้อข้อมูลของ UTF-8 กับ Unicode หรือ UTF-16

เปรียบเทียบ utf8 utf16 และ unicode
เปรียบเทียบ utf8 utf16 และ unicode

ปกติผมจะเรียกว่าประเภทตัวอักษรแบบ Unicode
แต่ใน Firefox และ Chrome เรียกว่า UTF-16
ในบราวเซอร์รุ่นใหม่จะรู้อัตโนมัติว่าเป็นแฟ้มข้อมูลแบบใด เพื่อการแสดงผล

UTF-8
UTF-8 เป็นมาตรฐานของตัวอักษร มี Character table ที่กำหนดอย่างชัดเจน
หากสร้างแฟ้มแบบ UTF-8 ที่มีตัวอักษร 3 ตัวคือ “กขค” จะใช้พื้นที่ทั้งหมด 12 bytes
โดยใช้พื้นที่เก็บข้อมูลตัวอักษรละ 3 bytes และส่วน header คงที่อีก 3 bytes
เมื่อใช้โปรแกรม editplus ที่กำหนด encoding type เป็น UTF-8 แล้วสร้างแฟ้ม พบว่า

กอไก่ คือ E0 B8 81 ฐาน 16
ขอไข่ คือ E0 B8 82 ฐาน 16
คอควาย คือ  E0 B8 84 ฐาน 16
โดย 3 Bytes แรกของแฟ้ม คือ EF BB BF ฐาน 16

แต่ตัวเลขในแฟ้มประเภท UTF-8 จะใช้ค่าตามตาราง ASCII เหมือนเดิม
แต่อักษร 3 bytes แรกก็ยังมีอยู่เหมือนเดิม
เมื่อสร้างแฟ้มที่มี “012” ก็จะได้แฟ้มขนาด 6 Bytes
ซึ่งมาตรฐานนี้กำหนดว่าภาษาไทยอยู่ระหว่าง 0xe0 0xb8 0x80 ถึง 0xe0 0xb9 0xbf
แต่ถ้าเป็นมาตรฐาน unicode หรือ UTF-16 จะอยู่ระหว่าง U+0E00 ถึง U+0E7F

UTF-16
หากกำหนดประเภทแฟ้มเป็น unicode หรือ UTF-16 แล้ว save as ข้อมูล “กขค”
จะใช้พื้นที่ขนาด 8 bytes พบว่า

กอไก่ คือ 01 0E ฐาน 16
ขอไข่ คือ 02 0E ฐาน 16
คอควาย คือ  04 0E ฐาน 16
โดย 2 bytes แรก คือ FF FE ฐาน 16

แต่ถ้าเป็นตัวเลข “012” ก็จะมีขนาดเท่ากับ “กขค” ที่ใช้พื้นที่ 8 bytes
โดย 2 bytes แรกเหมือนเดิม แต่ข้อมูลคือ 30 00 31 00 32 00
ซึ่ง unicode จะมีขนาดแฟ้มแน่นอน คือ ตัวอักษรละ 2 bytes
เมื่อรวมกับ header อีก 2 bytes ก็จะรู้ว่าแฟ้มนี้มีกี่ตัวอักษร
เช่น “ก0ข1ค2” จะมีขนาด 14 bytes

ขนาดแฟ้มที่แตกต่าง
เมื่อพิจารณาดูความต่างของขนาดแฟ้มจะพบว่า
ประเภท UTF-8 จะมีขนาดแฟ้มแปรผัน
ตามลักษณะของข้อมูล โดยตัวเลขใช้ 1 byte แต่ตัวอักษรใช้ 3 bytes
เช่น  “ก0ข1ค2” จะมีขนาด 15 bytes
เพราะ กขค ใช้พื้นที่ 9 bytes และ 012 ใช้พื้นที่ 3 bytes
รวม header 3 bytes ก็จะเป็น 15 bytes

แปลงอักษรจีนลงเว็บเพจ

chinese to unicode number character references
chinese to unicode number character references

10 ส.ค.53 มีโอกาสเกี่ยวข้องกับชาวจีนทางอ้อม ทำให้ต้องใช้ตัวอักษรจีนในเว็บเพจ แต่การปรับภาษาในเว็บเพจทุกหน้าคงไม่สะดวก จึงเลือกการใช้รหัสตัวเลขแทน  (NCRs = Unicode numerical character references) เพราะเป็นรหัสที่ browser จะแปลงและแสดงผลได้อย่างถูกต้อง โดยภาษาที่ทดสอบแปลงคือ Chinese characters และรวมถึง Japanese hiragana, katakana, and kanji; tonal Hanyu Pinyin; and Cyrillic script โดยอาศัยเว็บไซต์ pinyin.info ช่วยในการแปลงตัวอักษร
+ http://pinyin.info/tools/converter/chars2uninumbers.html