JavaScript, база данных MySQL и экранирование «странных» символов - PullRequest
1 голос
/ 09 сентября 2010

На моем сайте посетители могут сделать некоторые встроенные редактирование. Я использую ajax для него с базой данных MySQL и PHP. Я ожидаю, что голландский язык будет использоваться на сайте.

Моя задача - заставить кодировку символов работать хорошо.

Я мог бы использовать совет по:

  • база данных (я использую utf-8? Latin1_swedish_ci)
  • таблиц в базе данных (я бы предпочел, чтобы они были похожи на базы данных.)
  • экранирование для использования в вызове ajax (x = escape (x);)
  • набор символов веб-страницы (UTF-8? ISO-что-то?)
  • как все это работает вместе.

Я использую nicEdit в качестве редактора javascript wysiwyg.

Конечно, я мог бы объяснить, что происходит, когда я хочу сохранить & euml; и если это поможет, то я это сделаю, но я решил, что лучше понять этот вопрос, а не пытаться быстро его исправить.

[EDIT] Для уточнения:

Я использую их в своем PHP
$input = stripslashes($input); //(if magic quotes are 'on')
$input = mysql_real_escape_string($input);
$input = strip_tags($input, '<strong><em><span><ul><ol><p><a><br><li>');

На моей html-странице:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Javascript:
x = excape(x);

База данных:
MySQL connection collation: utf8_general_ci
Table options: DEFAULT CHARSET=utf8

Вот пример того, что происходит:

Я ввожу (inline) слово Rëg (используя «option + u», затем «e» на моем mac).
Я сохраняю слово. Это выглядит так: R g на веб-странице.
В базе данных я нахожу Rëg.

Я открываю редактор, ничего не делаю, но сохраняю снова, и он показывает: R% uFFFDg в базе данных и на странице. После этого он больше не меняется.

Любая помощь очень ценится.
Ким

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Это выглядит так: R�g на веб-странице.

Вам нужно указать браузеру, что вы отображаете веб-страницу в UTF-8и что это должно интерпретировать это как то же самое.Добавьте следующее в начало вашего PHP, перед тем, как испустит любой символ в вывод:

header('Content-Type: text/html; charset=utf-8');

Недостаточно только тега <meta>.Это не используется веб-браузером.Это заголовок ответа, который имеет значение.Кстати, функция Javascript escape() устарела .

См. Также:

0 голосов
/ 09 сентября 2010

Просто используйте UTF-8 для всего, и обычно это будет просто работать.

...