Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > запрос данных с помощью xmlhttprequest


Автор: unixman 9.10.2007, 11:15
Запрашиваю данные с сервера с помощью xmlhttprequest. Так как данные должны прийти с сервера в кодировке utf-8 , то я все русские символы перекадирую с помощью функции в utf8

Код

function escape($str){
    $escape_chars = "%u0410 %u0430 %u0411 %u0431 %u0412 %u0432 %u0413 %u0433 %u0490 %u0491 %u0414 %u0434 %u0415 %u0435 %u0401 %u0451 %u0404 %u0454 %u0416 %u0436 %u0417 %u0437 %u0418 %u0438 %u0406 %u0456 %u0419 %u0439 %u041A %u043A %u041B %u043B %u041C %u043C %u041D %u043D %u041E %u043E %u041F %u043F %u0420 %u0440 %u0421 %u0441 %u0422 %u0442 %u0423 %u0443 %u0424 %u0444 %u0425 %u0445 %u0426 %u0446 %u0427 %u0447 %u0428 %u0448 %u0429 %u0449 %u042A %u044A %u042B %u044B %u042C %u044C %u042D %u044D %u042E %u044E %u042F %u044F";
    $russian_chars = "А а Б б В в Г г Ґ ґ Д д Е е Ё ё Є є Ж ж З з И и І і Й й К к Л л М м Н н О о П п Р р С с Т т У у Ф ф Х х Ц ц Ч ч Ш ш Щ щ Ъ ъ Ы ы Ь ь Э э Ю ю Я я";
    $e = explode(" ",$escape_chars);
    $r = explode(" ",$russian_chars);
 
    $rus_array = my_str_split($str);
    $new_word = str_replace($r,$e,$rus_array);
    $new_word = str_replace(" ","%20",$new_word); 
    $new_word = implode("",$new_word);
     return ($new_word);
}

В функции перекадируются только русские буквы.
Будут ли проблемы если в ответе сервера будут буквы других национальных языков(украинского, латышского и др.)?

Автор: Sannis 9.10.2007, 12:57
А что мешает указать в ответе сервера
Код
Content-type: text/plain;charset=windows-1251

? И не надо будет перекодировать.

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

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