A-AA+then

เกี่ยวกับชื่อของไฟล์

1,032
 ไม่เข้าใจว่าใช้ฟังชั่นไหนคอนเวิท

เวลาจะสร้างไฟล์.txt
ให้มีชื่อเป็นภาษาไทย
เพราะใช้ $fp=fopen($File,'w');//ถ้ามีเขียนทับ ถ้าไม่มีสร้างใหม่
มันดันออกมารูปแบบนี้

 à¸šà¸±à¸™à¸—ึกการพัฒนา.txt 

ส่วน urlencode() มันออกมาแบบนี้ ไม่ตรงกับความต้องการ

%E0%B8%9A%E0%B8%B1%E0%B8%99%E0................

อย่างให้มันเขียนออกมาเป็นแบบนี้

บันทึก.txt

2 ความคิดเห็น

เราไม่สามารถสร้างชื่อไฟล์ที่เป็น ภาษาไทยบน Server ได้ครับ....

จะว่าไปก็ไม่ถูกทีเดียวนัก บาง Server ก็สร้างได้ ยกตัวอย่าง Server ที่เป็น Windows แต่ถ้าเป็น Linux มักจะไม่ค่อยได้

ปัจจุบันผมไม่สร้างชื่อไฟล์ภาษาไทยแล้ว...เพื่อหลีกเลี่ยงข้อจำกัดบน Server

ถ้าอยากจะใช้จริงๆ พอมีวิธีีทำเหมือนกัน แต่ไม่รับรองผลว่าจะใช้งานได้กับ Server ทุกแห่ง

วิธีแรก แปลงตัวอักษร ให้ทดลองดูว่าจะแปลจาก UTF-8 เป็น TIS-620 หรือ TIS-620 เป็น UTF-8 ด้วย iconv()

วิธีที่ 2 ชัวร์กว่า แต่เหมาะกับการทำดาวน์โหลด มากกว่าการเก็บไฟล์ที่เป็นชื่อไทย

หลักการก็คือ อย่างแรก ให้เก็บไฟล์ในรูปรหัส เช่น เข้ารหัสชื่อไฟล์ด้วย md5 หรืออาจสุ่มชื่อเอาก็ได้ ชื่ไฟล์ไม่มีประโยชน์อะไร ใช้แค่บันทึกลงบน Server เท่านั้น
อย่างที่ 2 เก็บชื่อไฟล์ ภาษาไทยหรืออะไรก็ตามลงบน db และเก็บชื่อไฟล์ที่บันทึกลงบน Server ตามข้อ 1 ลงบน db ด้วย
อย่างที่ 3 การดาวน์โหลดไฟล์ให้กระทำผ่านหน้าดวน์โหลด เพราะถ้าเรียกไฟล์ตรงๆ จะได้รหัสที่อ่านไม่รู้เรื่องไป โดยที่หน้าดาวนืโหลด ให้ query เอาชื่อจริงจากฐานข้อมูล มาใช้สำหรับเป็นชื่อไฟล์ดาวน์โหลดได้ ตัวอย่างมีบนเว็บ


1

 อืม........เคลียร์
อย่างที่คุณอาว่า  "ชื่อไฟล์ไม่มีประโยชน์อะไร ใช้แค่บันทึกลงบน Server เท่านั้น"
จริงๆ แล้วตอนนี้ไม่ได้ติดปัญหาจากการทำงานของระบบแต่อย่างใด
เพียงแต่เห็นชื่อไฟล์แล้วมันขัดลูกตา

คงต้องหันไปใช้การเทียบชื่อไฟล์อย่างที่คุณอาว่ามาทั้ง 3 ตัวอย่าง 
ไฟล์อันนี้เอาไว้เก็บ cache ฮะ พอแคชแล้ว ก็ยังแพ้ Latency อยู่ดี
เซิร์ฟอืดเป็นเต่า delay มากๆ ดูของคุณอาไม่กี่มิลลิเซคเอง ยิ่งพอแคชแล้ว
ลาเทนซี่แทบเป็นศูนย์ ไว้มากๆ

ขอบพระคุณ "คุณอา gOragod" มากๆ ฮะ







2
^