Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Кодирование данных при использовании метода load()


Автор: numerovan 11.7.2010, 20:07
Здравствуйте, использую фунцию load() и передаю в неё строку (кириллицу), получаемая страница принимает скракозябли. Как сделать правильно ?
Можно конечно через яваскрипт перевести слово на латиницу, после при перехвате другой страницы снова перевести латиницу в кириллицу. Использую кириллицу в базе данных как поля, для это мне это и нужно , чтоб с поля выбрать нужные значения.

Автор: 12345c 13.7.2010, 13:26
Используйте страницы HTML в кодировке UTF-8 или используйте функцию escape()/unescape() для общения с сервером.

Автор: numerovan 17.7.2010, 14:29
пробывал эти функции, почему-то ни чего не получилось. В итоге сделал две фунции на яваскрипте и на php. Яваскрипт переводит кириллицу в латиницу, после происходит передача на сервер, ну и там php из латиницы переводит в кирилицу, после идёт запрос к базе данных и всё считывается как пологается. Спасибо.
Код

function changeAlphabit(s){
    s = s.replace(new RegExp("й",'g'),"-yi-");
    s = s.replace(new RegExp("ф",'g'),"f");
    s = s.replace(new RegExp("я",'g'),"-ya-");
    s = s.replace(new RegExp("ц",'g'),"c");
    s = s.replace(new RegExp("ы",'g'),"-ye-");
    s = s.replace(new RegExp("ч",'g'),"-ch-");
    s = s.replace(new RegExp("у",'g'),"u");
    s = s.replace(new RegExp("в",'g'),"v");
    s = s.replace(new RegExp("с",'g'),"s");
    s = s.replace(new RegExp("к",'g'),"k");
    s = s.replace(new RegExp("а",'g'),"a");
    s = s.replace(new RegExp("м",'g'),"m");
    s = s.replace(new RegExp("е",'g'),"e");
    s = s.replace(new RegExp("п",'g'),"p");
    s = s.replace(new RegExp("и",'g'),"i");
    s = s.replace(new RegExp("н",'g'),"n");
    s = s.replace(new RegExp("р",'g'),"r");
    s = s.replace(new RegExp("т",'g'),"t");
    s = s.replace(new RegExp("г",'g'),"g");
    s = s.replace(new RegExp("о",'g'),"o");
    s = s.replace(new RegExp("ь",'g'),"-mz-");
    s = s.replace(new RegExp("ш",'g'),"-sh-");
    s = s.replace(new RegExp("л",'g'),"l");
    s = s.replace(new RegExp("б",'g'),"b");
    s = s.replace(new RegExp("щ",'g'),"-sch-");
    s = s.replace(new RegExp("д",'g'),"d");
    s = s.replace(new RegExp("ю",'g'),"-yu-");
    s = s.replace(new RegExp("з",'g'),"z");
    s = s.replace(new RegExp("ж",'g'),"-zh-");
    s = s.replace(new RegExp("э",'g'),"-e-");
    s = s.replace(new RegExp("х",'g'),"h");
    s = s.replace(new RegExp("ъ",'g'),"-tz-");
    s = s.replace(new RegExp("ё",'g'),"-yo-");
    return s;
}

Код

function changeAlphabit( $s ){
// тут важен порядок замены символов, в начале меняются с чёрточками, а после другое.
    $a = str_replace("-yi-", "й", $s);
    $a = str_replace("-ye-", "ы", $a);
    $a = str_replace("-ya-", "я", $a);
    $a = str_replace("-ch-", "ч", $a);
    $a = str_replace("-mz-", "ь", $a);
    $a = str_replace("-sh-", "ш", $a);
    $a = str_replace("-sch-", "щ", $a);
    $a = str_replace("-zh-", "ж", $a);
    $a = str_replace("-e-", "э", $a);
    $a = str_replace("-yu-", "ю", $a);
    $a = str_replace("-yo-", "ё", $a);
    $a = str_replace("-tz-", "ъ", $a);
    $a = str_replace("f", "ф", $a);
    $a = str_replace("c", "ц", $a);
    $a = str_replace("u", "у", $a);
    $a = str_replace("v", "в", $a);
    $a = str_replace("s", "с", $a);
    $a = str_replace("k", "к", $a);
    $a = str_replace("a", "а", $a);
    $a = str_replace("m", "м", $a);
    $a = str_replace("e", "е", $a);
    $a = str_replace("p", "п", $a);
    $a = str_replace("i", "и", $a);
    $a = str_replace("n", "н", $a);
    $a = str_replace("r", "р", $a);
    $a = str_replace("t", "т", $a);
    $a = str_replace("g", "г", $a);
    $a = str_replace("o", "о", $a);
    $a = str_replace("l", "л", $a);
    $a = str_replace("b", "б", $a);
    $a = str_replace("d", "д", $a);
    $a = str_replace("z", "з", $a);
    $a = str_replace("h", "х", $a);
    return $a;
}


Автор: bars80080 17.7.2010, 15:56
ну, это конечно ахтунг полный. применили хотя бы для str_replace() массивы. проще было бы


данная проблема отсутствует для кодировки UTF-8, когда и скрипты и сами страницы в ней находятся. может ещё потребуется установить соответствующий заголовок для отдающего скрипта

для кодировки cp1251 данная проблема решается комбинацией некоторых функций. только в зависимости от систем, их надо подбирать:
клиент - сервер - клиент:
encodeURIComponent() - rawurldecode(), iconv(), rawurlencode() - decodeURIComponent()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)