javascript и utf-8 / помогают специальные символы - PullRequest
1 голос
/ 27 октября 2009

КОРОТКАЯ ВЕРСИЯ ВОПРОСА: Итак, в основном мой вопрос: как я могу настроить javascript на использование UTF-8, чтобы обеспечить поддержку, чтобы мой javascript мог добавить правильные значения в параметры выпадающего списка?

ДОПОЛНИТЕЛЬНОЕ ОБЪЯСНЕНИЕ: Я использую JavaScript, чтобы заполнить «параметры» в выпадающем списке на моей главной странице. Выпадающие списки находятся в форме, которая вызывает скрипт php, который запрашивает базу данных mysql.

Проблема в том, что я использую специальные символы, такие как ä ä ö в моей базе данных mysql. И когда я запрашиваю базу данных mysql следующим образом:

    SELECT * FROM database WHERE city = $city

ничего не находит.

Это потому, что $ city содержит специальные символы, установленные javascript. Но если установить переменную $ city без javascript, например, в моем html-документе с

      option value=åäö

тогда это будет работать. Это означает, что проблема в javascript, и вместо этого он устанавливает специальные символы на что-то другое, и это заставляет запрос ничего не находить.

JavaScript, который заполняет мой выпадающий список:

                    if(document.nav_form_main.nav_city_list.value == '4'){
        removeAllOptions(document.nav_form_main.nav_city_list);
        addOption(document.nav_form_main.nav_city_list, "Göteborg",             "Göteborg", "");
        addOption(document.nav_form_main.nav_city_list, "goteborg_closeby", "Angränsande områden", "");
        addOption(document.nav_form_main.nav_city_list, "1", "Hela Sverige", "");
        addOption(document.nav_form_main.nav_city_list, "other_area", "-- Välj område på nytt --", "");
    }
    function removeAllOptions(selectbox)
    {
var i;
for(i=selectbox.options.length-1;i>=0;i--)
{
    //selectbox.options.remove(i);
    selectbox.remove(i);
}
    }


    function addOption(selectbox, value, text )
    {
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;

selectbox.options.add(optn);
    }

МОЙ HTML ОСНОВНЫЕ ДОКУМЕНТЫ ИСПОЛЬЗОВАНИЯ: ISO 8859-1

КОГДА ВЫБИРАЕТСЯ «ÄÄÖ» это работает в моем PHP-коде. НО КОГДА ВЫБРАТЬ ПЕРЕМЕННОЕ ИЗ JAVASCRIPT ÅÄÖ ЗАМЕНЯЕТСЯ СТРАННЫМИ СИМВОЛАМИ

Ответы [ 4 ]

1 голос
/ 25 июня 2013

Вот как я решил эту проблему:

document.getElementById("somewhere").innerHTML="mytext";
myoption = document.createElement("option");
myoption.value="myvalue";
myoption.text=document.getElementById("somewhere").innerHTML;
myselect.add(myoption,null);

"где-то" - это неиспользуемый, или скрытый, или специально созданный элемент на странице.

когда javascript читает из innerHTML, вы получаете правильные символы.

0 голосов
/ 27 октября 2009

Насколько я вижу, ваша проблема на стороне сервера, а не на стороне клиента. Другими словами, проблема в вашем php, а не в вашем javascript. Попробуйте создать простой php-скрипт для вывода вашего запроса javascript.

0 голосов
/ 28 октября 2009

Чтобы избежать каких-либо проблем, убедитесь, что вы правильно относитесь к своему контенту как на стороне клиента, так и на стороне сервера.

С PHP: utf8_encode() и utf8_decode()

С использованием JavaScript используйте webtoolkit.utf8.js : Utf8.encode() и Utf8.decode()

0 голосов
/ 27 октября 2009

Попробуйте это до отправки на / после получения с сервера ...

function encode_utf8( s ) {
  return unescape( encodeURIComponent( s ) );
}

function decode_utf8( s ) {
  return decodeURIComponent( escape( s ) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...