Кодировать ● специальный символ в php - PullRequest
0 голосов
/ 29 июля 2011

Мне нужно хранить специальный символ ● в базе данных.

Я делаю это:

htmlentities($text,ENT_QUOTES,'UTF-8')

по причинам, которые я не понимаю, символ ● не кодируется, он остается в своей «нормальной» (●) форме вместо своей кодированной (●) формы, похоже, этот символ является частью utf -8 кодировка, но мне все равно нужно кодировать ее (●) в БД. Я не могу использовать другую кодировку, потому что мне нужен UTF-8.

Почему это происходит?

Спасибо

РЕДАКТИРОВАТЬ: Это не обсуждение кодирования или не кодирования символов в базе данных, я хотел бы знать, почему этот конкретный символ полностью игнорируется.

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Вы можете использовать многобайтовые функции для преобразования вашей строки UTF-8 в US-ASCI при замене любого не-ASCII символа на символьную ссылку:

mb_substitute_character('entity');
$ascii = mb_convert_encoding($utf8, 'ASCII', 'UTF-8');

Хотя я тоже не вижу причин делать это. Ваша база данных не будет интерпретировать любую строку как HTML.

0 голосов
/ 29 июля 2011

Встроенная функция с самым широким набором HTML-объектов, вероятно, mb_convert_encoding :

<?php
// Assuming UTF-8 input:
echo mb_convert_encoding('●', 'HTML-ENTITIES', 'UTF-8');

В любом случае, после того, как вы сохранили простой текст в виде HTML, его трудно вернуть обратно в обычный текст (или перекодировать, если изменились спецификации). Я бы порекомендовал хранить вещи как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...