[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема кодировки файла php
Алл
Решил создать маленький сценарий при котором пользователь вводит украинское слово, а php выводит его спряжение. Начал со слова что заканчивается на "я". Должно получится так:
Н. гиря
Р. гирі
Д. гирі
З. гирю
О. гирею
М. на гирі
К. гире
Вот исходный код php:
<?php
$word=$_GET['word'];
$a=substr($word,-1);
function decline1_soft(){
$word=$_GET['word'];
$declin_name=array("Н.","Р.","Д.","З.","О."," ;М.","К.");
$declin_end=array("і","ю","ею","е");
echo "$declin_name[0]&nbsp;$word<br>";
$i=substr_replace($word, $declin_end[0], -1);
echo "$declin_name[1]&nbsp;$i<br>";
$i=substr_replace($word, $declin_end[0], -1);
echo "$declin_name[2]&nbsp;$i<br>";
$i=substr_replace($word, $declin_end[1], -1);
echo "$declin_name[3]&nbsp;$i<br>";
$i=substr_replace($word, $declin_end[2], -1);
echo "$declin_name[4]&nbsp;$i<br>";
$i=substr_replace($word, $declin_end[0], -1);
echo "$declin_name[5]&nbsp;на&nbsp;$i<br>";
$i=substr_replace($word, $declin_end[3], -1);
echo "$declin_name[6]&nbsp;$i";
return;
}
/*Должно выйти так:
Н. гиря
Р. гирі
Д. гирі
З. гирю
О. гирею
М. на гирі
К. гире
*/
if($a="я"){
echo decline1_soft();
}else{
echo "Введите другое слово";
}
?>
Но проблема постала в том, что в браузере выводятся вот так:
Н. ����
Р. ���і
Д. ���і
З. ���ю
О. ���ею
М. на ���і
К. ���е
Само содержимое $word не выводится корректно.
Я использую оперу, codelobster и денвер. Считаю, что проблема в денвере. пробовал менять в файле Z -> usr -> local -> apache -> conf -> httpd.conf AddDefaultCharset windows-1251 на AddDefaultCharset utf-8, потом перезапускал денвер. Ничего! Менял кодировку на utf-8 в codelobster"е и опере. Ничего! Ставил заголовок в php файле header("Content-Type: text/html;charset=utf-8"); Ничего! Вот что я заметил присмене кодировок.
Когда стоит в php файле заголовок header("Content-Type: text/html;charset=windows-1251"); то выводится следующее:
Рќ. Гиря
Р . ГирС–
Р”. ГирС–
Р—. ГирСЋ
Рћ. Гирею
Рњ. РЅР° ГирС–
Рљ. ГирРµ
Тоесть содержимое $word выводится а остальное нет. Противоположность случаю, который приведен выше. А когда содержимое $word написано в самом коде, тоесть пользователь ничего не вводит, то выходит вот так:
Н. Гиря
Р. Гир�і
Д. Гир�і
З. Гир�ю
О. Гир�ею
М. на Гир�і
К. Гир�е
Но html файлы браузер выводит без казусов. Может кто поможет в этом деле?
Zzepish
ты кодировку где прописал?
walerus
Zzepish
twin
$declin_end[0] не будет работать с многобайтными символами.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Undertaker
Кодировка должна указываться в начале документа

<!DOCTYPE HTML>
<html>
<head>
<meta
http-equiv="content-type" content="text/html; charset=utf8" />

В IE иногда бывает что эта падла выводит в своей кодировке, надо ему поставить галочку "автоматическая кодировка"
Так же надо не забывать про iconv (обычно проблемы возникают при работе с базой, но может и в повседневной жизни быть)
Так же при работе с базой незабываем про команду
mysql_query("SET NAMES utf8");

И наконец сам документ надо перекодировать в нужную кодировку. В моём примере это utf-8 без BOM (notepad++)

_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.