2013-07-05 4 views
3

Я пытаюсь дезинфицировать ввод базы данных и обнаружил проблему с символом..Преобразование символов (Copyright, Reg и т. Д.)

Ⓡ превращается в

Ⓡ 

Даже с html_entity_decode вокруг переменной.

Это проблема, потому что поле предназначено только для того, чтобы 4 базы данных в базе данных.

® Фактически работает и обрабатывается как один символ.

У меня такая же проблема с Ⓒ vs ©.

Насколько я знаю, они являются просто объектами html, поэтому их необходимо декодировать. Однако они даже не закодированы с помощью htmlspecialchars(). Он просто перекликается с кодом

Ⓡ 

Есть ли у PHP какие-либо встроенные функции для решения этой проблемы? Благодаря

Редактировать просто сказать, что я пытаюсь сделать:

У меня есть текстовые поля для ввода и добавления в базу данных, которая отображает в таблице ниже. Когда я ввожу любого другого персонажа, такого как <> &, он входит прямо в базу данных как один символ.

Я стараюсь, чтобы Ⓡ и Ⓒ всегда включались как один символ, а также (вместо 6).

Я только кодирую на выходе в таблице, чтобы определенные символы не нарушали веб-сайт.

+0

Возможный дубликат [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – deceze

ответ

2

Проблемы, что объект не декодирует при использовании html_entity_decode вероятно, что целевого набора символов дан html_entity_decode по-прежнему по умолчанию ISO-8859-1. ISO-8859-1 не может кодировать «Ⓡ» (CIRCLED LETTER R), но он может кодировать «®» (ЗАРЕГИСТРИРОВАННАЯ МАРКА).

Итак, первое, чтобы правильно декодировать:

html_entity_decode('&#9415;', ENT_COMPAT, 'UTF-8') 

Но, во-вторых, «Ⓡ» и «®» не являются такой же характер, и вы, вероятно, не хотят «Ⓡ».

+0

Это преобразует его в '' '' '' ' кажется – Anon343224user

+0

@foxy Вам нужно начать с изучения чего-то о кодировках: [Что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом] (http://kunststube.net/encoding/), затем [ Работа с Unicode Front To Back в веб-приложении] (http://kunststube.net/frontback/) – deceze

+0

Спасибо. От чтения этих и некоторых тестов я думаю, что наша база данных на самом деле является проблемой. Это Latin1_General_CI_AS. Кодировка сайта была ISO-8859-1, когда я изменил ее на UTF-8, Ⓡ показал как единственный символ в источнике и во всем. Просто база данных не имела его, так как у него нет этого символа в этой кодировке? Еще раз спасибо – Anon343224user

Смежные вопросы