Я обращаю внимание на множество вопросов о преобразовании символов HTML, таких как больше / меньше, амперсанд и т. д., В объекты HTML, но меня это не волнует. У меня проблема:
Код JavaScript / Ajax, который передает значения из элемента управления INPUT, который имеет символ, такой как â, в программу PHP - в программе PHP я сохраняю данные с помощью mysqli_real_escape_string()
, который, если бы я не использовал Javascript / Ajax, помог бы.
Похоже, что прежде, чем он попадет в код PHP, он преобразуется во что-то нечетное (два символа) в процессе (я уже исправил данные, поэтому не могу сказать вам точные два символа и сомневаюсь, что это так важно). Я хотел бы преобразовать его в â
, который является правильным HTML-объектом. Однако я не могу найти в Интернете ответа на этот вопрос ...
Мне не нужен каждый символ в строке, преобразованный в объекты HTML, только буквы верхнего конца с диакритическими знаками (символы акцента и т. д.). Я надеюсь, что у кого-то есть функция для JavaScript, которая делает это, но пока то, что я вижу при поиске в Интернете, делает слишком много (преобразование каждого символа в строке в сущность HTML неэффективно по пространству при сохранении его в таблице) .
Код JavaScript / Ajax для получения и передачи данных:
function remembrance_save()
{
// first thing, clear out the message div used for this (if there's anything there):
document.getElementById("remembrance_message").innerHTML = "";
// from here we need to get the contents of all the various entry areas, and pass them
// off to a PHP file and save the data ...
// copy award data to session object by use of ajax/php:
var namecode = document.getElementById("namecode").value;
// get value from TinyMCE ... not the DOM for JavaScript:
var remembrance = tinymce.get('remembrance').getContent();
var cl = document.getElementById("commentor_link").value;
var cn = document.getElementById("commentor_name").value;
$.ajax
({
type: "POST",
url: "<?php echo $History_html_RootPath; ?>Who/AjaxCalls/remembrance_save.php",
data: { 'namecode' : namecode,
'remembrance' : remembrance,
'commentor_link' : cl,
'commentor_name' : cn },
//cache: false,
success: function(data)
{
// need to see if we have an error, if so, display it, otherwise,
// we should hopefully have success ...
if ( data.toLowerCase().includes( "error" ) )
{
var errormsg = "<div class='alert alert-danger'>"+data+"</div>";
document.getElementById("remembrance_message").innerHTML = errormsg;
return;
}
else
{
// success!
// change the message, and then clear out the values:
var message = "<div class='alert alert-success'>";
message += data;
message += "</div>";
document.getElementById("remembrance_message").innerHTML = message;
// clear out values:
// the remembrance editor takes two, because TinyMCE (editor)
// stores the values its own way
document.getElementById("remembrance").value = "";
tinymce.get('remembrance').setContent( "" );
// the other two
document.getElementById("commentor_link").value = "0";
document.getElementById("commentor_name").value = "";
return;
}
} // end success
}); // end ajax call
}; // end function remembrance_save()
Вы не должны преобразовывать это в объекты HTML, а обрабатывать кодировку символов правильно. См. Дубликат для получения дополнительной информации.
Покажите нам, как именно вы отправляете свои данные через AJAX, вероятно, вы просто не позаботились о том, чтобы правильно их обработать в этот момент.
Кодировка UTF-8 не обрабатывает некоторые из необходимых мне символов, но latin-1 поддерживает (ISO-8859-1). Добавим выше код Ajax.
Это чепуха, все, что у вас есть в ISO-8859-1, также покрыто Unicode.
Я знаю, что вы в это верите, но когда я использую UTF-8, некоторые символы, с которыми я работаю, НЕ отображаются должным образом. У меня есть некоторые представление о том, что я здесь делаю, у меня возникали проблемы с этим за последние несколько лет. У меня много международных имен, в которых используются самые разные символы. Пожалуйста, не будь таким снисходительным. Сказать мне «это абсолютная чепуха» бесполезно.
â
, и если у вас есть проблема с этим в UTF-8, то вы окончательно делаете что-то не так.
Быть грубым бесполезно. Сказать кому-то, что то, что они опубликовали, является «ерундой», не поможет, это будет грубостью, и если вы этого не видите, это ваша проблема, а не моя.
Этот самый сайт здесь использует UTF-8, и если вы проверите исходный код, то вы увидите, что в HTML есть только â
, например, в позиции вышеупомянутого "Которые имеют такой символ, как â, для программы PHP" - это простой символ, без сущностей HTML или что-нибудь еще.
Если вы не собираетесь помогать с моей проблемой, пожалуйста, остановитесь ... надеюсь, кто-нибудь с более полезным отношением к вам будет готов разместить здесь сообщение.
Возможный дубликат UTF-8 полностью