Одно из моих полей (которое является latin1_swedish_ci), похоже, показывает символ евро в PHPMYADMIN внутри поля.
Однако, когда я пытаюсь повторить его в поле ввода на моем веб-сайте в форме, он отображается как вопросительный знак в firefox.
$sql = mysql_query("select * from `settings`"); while ($row = mysql_fetch_assoc($sql)) $setting[$row['field']] = htmlspecialchars($row['value'], ENT_QUOTES); <input type="text" name="currency_symbol" id="currency_symbol" size="50" value="<?php echo $setting['currency_symbol']; ?>" />
Я использую следующий метатег на странице:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Я попытался использовать utf8_general_ci для поля, но получаю тот же результат.
Попробуйте использовать htmlentities()
вместо htmlspecialchars()
.
Специальные символы не преобразуют все, всего несколько символов. Евро-символ €, должен быть действительно закодирован €
,
Если вы обслуживаете страницу как UTF-8, вам необходимо убедиться, что вы извлекли строку из базы данных в кодировке UTF-8, прежде чем положить ее на страницу. Вы можете сделать это, используя:
mysql_set_charset('utf8');
(Если вы это делаете, имеет смысл также хранить ваши фактические данные таблицы в UTF-8, например utf8_general_ci
, а не latin1_swedish_ci
, поэтому вы можете правильно обрабатывать символы за пределами базового набора Latin-1.)
Попробуйте изменить кодировку MySQL на UTF-8 или на шведский.
Вот небольшой пример.