javascript и utf-8 / специальные символы

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

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

Проблема заключается в том, что Im использует специальные символы, такие как å ä ö в моей базе данных 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); } 

МОЙ ОСНОВНОЙ ДОКУМЕНТ В ОСНОВАНИИ: ISO 8859-1

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

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

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

 function decode_utf8 (s) {
   return decodeURIComponent (escape (s));
 } 

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

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

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

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

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

С PHP: utf8_encode() и utf8_decode()

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

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