Как хранить символы типа ♥ ☆ в БД?

0

Предыдущая проблема - не удалось сохранить неанглийские символы:

Как хранить неанглийские символы?

Это было исправлено с помощью UTF8. Но сегодня поняли, что символы, подобные , не сохраняются правильно. Они преобразуются в символы типа â¥â˜†.

Как это можно зафиксировать?

  • 1
    I☆ видимо, ТАК не имеет проблем с ними. (☆ _ ☆)
Теги:
character-encoding
utf-8
latin1

2 ответа

2
Лучший ответ

Используется ли UTF8 последовательно во всем спектре (MySQL, PHP, Apache, <meta> s, заголовки..)?

Для меня это получилось из коробки:

$query = "update tbl set col = '☆' where id = 1";
mysql_query($query) or die(mysql_error());
$query = "select col from tbl where id = 1";
$res = mysql_query($query) or die(mysql_error());
print_r(mysql_fetch_row($res));

Отладочный вывод:

Content-type: text/html; charset=utf-8
Array
(
    [0] => ☆
)
  • 0
    Сработало после добавления: <meta http-equ = "Content-Type" content = "text / html; charset = UTF-8">
12

Мне кажется, что они хранятся правильно, но вы не интерпретируете их правильно, когда вы их читаете. и будут заканчиваться как многобайтовые символы в кодировке UTF-8. Готов поспорить, если вы посмотрите на это многобайтовое кодирование, вы увидите его так же, как однобайтная кодировка для ⥠и ☆ соответственно.

Изменить: добавление сведений.

Как вы можете видеть в следующей таблице, интерпретация символов UTF-8, как если бы они были закодированы как Windows Latin-1, дает результаты, которые вы видите.

UTF-8 character      Hex
                    e2 99 a5
☆                    e2 98 86

Windows Latin-1      Hex
â                    e2
                    99
¥                    a5
˜                    98
†                    86
  • 0
    Хорошо. Так как правильно отобразить его с помощью PHP?
  • 2
    Это не связано с PHP. В вашем HTML вы должны указать кодировку UTF-8.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню