ฉันอ่านข้อความจำนวนมากจากฟีด RSS ต่างๆและแทรกลงในฐานข้อมูลของฉัน
แน่นอนว่ามีการเข้ารหัสอักขระหลายตัวที่ใช้ในฟีดเช่น UTF-8 และ ISO 8859-1
น่าเสียดายที่บางครั้งมีปัญหากับการเข้ารหัสของข้อความ ตัวอย่าง:
"ß" ใน "Fußball" ควรมีลักษณะเช่นนี้ในฐานข้อมูลของฉัน: "Ÿ" หากเป็น "Ÿ" แสดงว่าถูกต้อง
บางครั้ง "ß" ใน "Fußball" มีลักษณะเช่นนี้ในฐานข้อมูลของฉัน: "ß" แน่นอนว่ามันถูกแสดงอย่างผิด ๆ
ในกรณีอื่น ๆ "ß" จะถูกบันทึกเป็น "ß" - ดังนั้นโดยไม่มีการเปลี่ยนแปลงใด ๆ จากนั้นมันก็จะแสดงผิด
ฉันจะทำอย่างไรเพื่อหลีกเลี่ยงกรณีที่ 2 และ 3
ฉันจะทำให้ทุกอย่างเข้ารหัสเหมือนกันโดยเฉพาะอย่างยิ่ง UTF-8 ได้อย่างไร ฉันต้องใช้utf8_encode()
เมื่อใดฉันจะต้องใช้เมื่อใดutf8_decode()
(ชัดเจนว่าผลกระทบคืออะไร แต่เมื่อใดฉันต้องใช้ฟังก์ชั่น?) และเมื่อใดที่ฉันต้องใช้อะไรกับอินพุต?
ฉันจะทำให้การเข้ารหัสทุกอย่างเหมือนกันได้อย่างไร บางทีด้วยฟังก์ชั่นmb_detect_encoding()
? ฉันสามารถเขียนฟังก์ชันสำหรับสิ่งนี้ได้หรือไม่? ดังนั้นปัญหาของฉันคือ:
- ฉันจะค้นหาการเข้ารหัสข้อความที่ใช้ได้อย่างไร
- ฉันจะแปลงเป็น UTF-8 ได้อย่างไรการเข้ารหัสแบบเก่าคืออะไร
ฟังก์ชั่นนี้จะใช้งานได้ไหม?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
ฉันทดสอบแล้ว แต่ใช้งานไม่ได้ มีอะไรผิดปกติกับมัน?