Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 18:19   #1
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию Почему в результате работы простых функций отображается ересь?

Здравствуйте.
Начал изучение PHP с книги "PHP в примерах" от С.Хольцнера. На странице 76 приводится пример кода с использование строковых функций и результат отображения в браузере.
Вот код:
Код:
<?
echo trim (" Жизнь прекрасна!"), "<br>";
echo substr ("Жизнь прекрасна!", 6, 9), "<br>";
echo "\"прекрасна\" начинается с символа ", strpos ("Жизнь прекрасна!", "прекрасна"), "<br>";
echo ucfirst ("жизнь прекрасна!"), "<br>";
echo "Длина строки \"Жизнь прекрасна!\" ", strlen ("Жизнь прекрасна!"), " символов.<br>";
echo substr_replace ("Жизнь прекрасна!", "ужасна", 6, 9), "<br>";
echo chr (65), chr (66), chr (67), "<br>";
echo strtoupper ("Жизнь прекрасна!"), "<br>";
?>
Вот результат, который отображается у меня в браузере IE:
Цитата:
Жизнь прекрасна!
нь пр
"прекрасна" начинается с символа 11
жизнь прекрасна!
Длина строки "Жизнь прекрасна!" 30 символов.
Жизужаснаекрасна!
ABC
ЖШзнь ЯреЪрасна!
Не могу понять, в чем проблема.
Кто-нибудь может подсказать, в чем может быть проблема?
Спасибо.

Последний раз редактировалось akokin; 29.11.2009 в 18:25.
akokin вне форума Ответить с цитированием
Старый 29.11.2009, 18:45   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

У Вас текст скрипта сохранён в UTF-8, сохраните в KOI8-R или CP-1251. Если в браузере будут кракозябры, укажите кодировку
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 29.11.2009, 18:49   #3
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
У Вас текст скрипта сохранён в UTF-8, сохраните в KOI8-R или CP-1251. Если в браузере будут кракозябры, укажите кодировку
А как же быть, если код должен быть в UTF-8?
Спасибо.
akokin вне форума Ответить с цитированием
Старый 29.11.2009, 18:52   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

А зачем код должен быть в UTF-8? Всегда его в cp1251 сохранял, никаких проблем не было
Пишите/ищите аналоги этих функций для unicode, или каждый раз используйте utf8_decode()
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 29.11.2009, 18:55   #5
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Ну, например, для блогового движка WordPress. Везде у меня используется UTF-8.
akokin вне форума Ответить с цитированием
Старый 29.11.2009, 19:03   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

В движках информация хранится в БД, а не в самих текстах скриптов, и как правило, никаких проблем с отображением не возникает. Если всё-таки что-то не так, преобразуйте явно кодировки
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 29.11.2009, 19:07   #7
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Если позволите, то тогда еще один вопрос все по этому же коду.
Я сменил редактор кода с NotePad2 на PHP Expert Editor и установил кодировку в АNSI. Все стало отображаться вроде верно.
Но вот высчитывает в третьей строке почему-то - 6, то есть слово начинается с 6 символа. А ведь оно начинается с 7 символа... шестой символ это пробел.
Это я не правильно отсчитываю, или ?
Спасибо.
akokin вне форума Ответить с цитированием
Старый 29.11.2009, 19:31   #8
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Все понял: потому что отсчет ведется с 0, а не с 1. Спасибо.
akokin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сайт не отображается в IE и Opera. Отображается только в FireFox. Roman_K HTML и CSS 3 03.02.2011 22:32
Почему двоеточие и тире отображается выше обычного? Сергей Орлов Microsoft Office Word 1 10.07.2009 00:53
использование процедур и функций для работы с массивами.....Паскаль.... КиношкА Помощь студентам 6 13.01.2008 14:23
Проблеммы с использованием функций работы со строками Copy и Pos Soso Общие вопросы Delphi 13 09.08.2007 16:01