Це питання кодування. Таким чином, це може помилитися на багатьох різних рівнях, але, швидше за все, рядки у вашій базі даних закодовані utf-8, і ви представляєте їх як iso-8859-1. Або навпаки.
Правильний спосіб вирішити цю проблему - це виправити набори символів. Найпростіша стратегія, оскільки ви використовуєте PHP, полягає у використанні iso-8859-1 у всій програмі. Для цього потрібно переконатися, що:
- Усі вихідні файли PHP зберігаються як iso-8859-1 (не плутати з cp-1252).
- Ваш веб-сервер налаштований на обслуговування файлів
charset=iso-8859-1
- Крім того, ви можете замінити налаштування веб-серверів у PHP-документі, використовуючи
header
.
- Крім того, ви можете вставити мета-тег у свій HTML, який вказує те саме, але це не є суворо необхідним.
- Ви також можете вказати
accept-charset
атрибут для своїх <form>
елементів.
- Таблиці баз даних визначаються з кодуванням як latin1
- З'єднання з базою даних між PHP і базою даних встановлено на latin1
Якщо у вашій базі даних уже є дані, вам слід пам’ятати, що вони, ймовірно, вже переплутані. Якщо ви ще не у фазі виробництва, просто витріть все це і починайте спочатку. В іншому випадку вам доведеться зробити деяке очищення даних.
Примітка про мета-теги, оскільки всі неправильно розуміють, що вони собою представляють:
Коли веб-сервер обслуговує файл (HTML-документ), він надсилає деяку інформацію, яка не відображається безпосередньо у браузері. Це відоме як HTTP-заголовки. Одним із таких заголовків є Content-Type
заголовок, який вказує тип mime файлу (Напр. text/html
), А також кодування (він же набір символів). Хоча більшість веб-серверів надсилатимуть Content-Type
заголовок з charset
інформацією, це необов’язково. Якщо його немає, браузер замість цього інтерпретує будь-які мета-теги за допомогою http-equiv="Content-Type"
. Важливо розуміти, що мета-тег інтерпретується лише в тому випадку, якщо веб-сервер не надсилає заголовок. На практиці це означає, що він використовується лише в тому випадку, якщо сторінка зберігається на диску, а потім відкривається звідти.
На цій сторінці дуже добре пояснено ці речі.