Saya membacakan banyak teks dari berbagai umpan RSS dan memasukkannya ke dalam basis data saya.
Tentu saja, ada beberapa pengkodean karakter yang berbeda yang digunakan dalam umpan, misalnya UTF-8 dan ISO 8859-1.
Sayangnya, terkadang ada masalah dengan penyandian teks. Contoh:
"Ss" di "Fußball" akan terlihat seperti ini di basis data saya: "Ÿ". Jika "Ÿ", itu ditampilkan dengan benar.
Terkadang, "ß" di "Fußball" terlihat seperti ini di basis data saya: "ß". Maka itu ditampilkan salah, tentu saja.
Dalam kasus lain, "ß" disimpan sebagai "ß" - jadi tanpa perubahan apa pun. Maka itu juga ditampilkan salah.
Apa yang bisa saya lakukan untuk menghindari kasus 2 dan 3?
Bagaimana saya bisa membuat semuanya pengkodean yang sama, sebaiknya UTF-8? Kapan saya harus menggunakan utf8_encode()
, kapan saya harus menggunakan utf8_decode()
(jelas apa efeknya tetapi kapan saya harus menggunakan fungsi?) Dan kapan saya tidak melakukan apa-apa dengan input?
Bagaimana cara membuat semuanya menjadi sama? Mungkin dengan fungsinya mb_detect_encoding()
? Bisakah saya menulis fungsi untuk ini? Jadi masalah saya adalah:
- Bagaimana cara mengetahui pengkodean yang digunakan teks?
- Bagaimana cara mengonversinya menjadi UTF-8 - apa pun pengkodean lama itu?
Apakah fungsi seperti ini berfungsi?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
Saya sudah mengujinya, tetapi tidak berhasil. Apakah ada yang salah?