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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2015, 05:26   #1
Alek.Teslya
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 6
Печаль Вывод кирилических символов строки

Здравствуйте!
Помогите в решении проблемы. Я только начинаю разбираться с PHP и натолкнулся на такой неприятный нюанс:
Кодировка документа UTF-8, в настройках OpenServer тоже UTF-8. Переменная, содержащая строку русскими символами выводится как положено, но при выдёргивании и последующем выводе какого либо из символов этой же строки, выводятся квадратики. С английскими символами такой проблемы нет.
И ещё не работает перевод на следующую строку \n.

Буду очень признателен за оказанную помощь

скриншот.jpg
Alek.Teslya вне форума Ответить с цитированием
Старый 17.04.2015, 08:22   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Сначала делайте так http://www.infospir.ru/lessons/npp-usage-02.php не поможет сделать еще так http://gladweb.ru/problema-s-kodirov...ili-ieroglify/

простите меня конечно даю ссылки потому что уже млн раз обсуждались эти вопросы и на этом форуме в том числе.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 17.04.2015, 09:29   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

символы UTF-8 занимают 2 байта.. .в то время как вы выводите по одному байту [0] итд .. по сути полсимвола отрезаете и получаете ерунду...
используйте функции с приставкой mb - http://php.ru/manual/function.mb-substr.html
Код:
mb_substr($juice,0,1)
итд
ADSoft вне форума Ответить с цитированием
Старый 17.04.2015, 16:04   #4
Alek.Teslya
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
Сначала делайте так http://www.infospir.ru/lessons/npp-usage-02.php не поможет сделать еще так http://gladweb.ru/problema-s-kodirov...ili-ieroglify/

простите меня конечно даю ссылки потому что уже млн раз обсуждались эти вопросы и на этом форуме в том числе.
К сожалению, не сработал ни один из вариантов.
Alek.Teslya вне форума Ответить с цитированием
Старый 17.04.2015, 16:11   #5
Alek.Teslya
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
символы UTF-8 занимают 2 байта.. .в то время как вы выводите по одному байту [0] итд .. по сути полсимвола отрезаете и получаете ерунду...
используйте функции с приставкой mb - http://php.ru/manual/function.mb-substr.html
Код:
mb_substr($juice,0,1)
итд
Вот здесь уже интересно)

Код, приведенный вами в сообщении не работает, но вот какая штука получилась:

Причём аналогично действуют и substr, и mb_substr
В любом случае, какой то выход из ситуации уже есть. Буду изучать дальше. Спасибо за ваш ответ
Изображения
Тип файла: jpg скриншот.jpg (95.6 Кб, 131 просмотров)
Alek.Teslya вне форума Ответить с цитированием
Старый 17.04.2015, 16:24   #6
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

вы меня простите за грубость которая может быть - но скажу прямо, делов к кривых руках, вы не правильно выставили кодировку те ссылки что я давал должно быть достаточно, вы написали 20 строк кода и у вас ничего не правильно отображаются символы это боян. а заниматься перекодировкой это бред. все должно работать нормально при нормальных настройках
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 17.04.2015, 16:39   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Для комфортного использования mb_-функций нужно установить внутреннюю кодировку скрипта при помощи mb_internal_encoding.
Всё работает без проблем:
PHP код:
php -a
Interactive shell

php 
mb_internal_encoding('UTF-8');
php $juice 'апельсин';
php > echo $juice;
апельсин
php 
> echo mb_substr($juice12);
пе
php 
> echo mb_substr($juice22);
ел 
Andkorol вне форума Ответить с цитированием
Старый 17.04.2015, 16:42   #8
Alek.Teslya
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
вы меня простите за грубость которая может быть - но скажу прямо, делов к кривых руках, вы не правильно выставили кодировку те ссылки что я давал должно быть достаточно, вы написали 20 строк кода и у вас ничего не правильно отображаются символы это боян. а заниматься перекодировкой это бред. все должно работать нормально при нормальных настройках
По поводу кривых рук, даже спорить не стану. Я просмотрел обе ваши ссылки, вот скриншот настроек, которые я сделал исходя из полученной информации. Результат по ним выложен выше. Буду признателен вам, если поможете что-исправить
Изображения
Тип файла: jpg скриншот.jpg (104.2 Кб, 125 просмотров)
Alek.Teslya вне форума Ответить с цитированием
Старый 17.04.2015, 16:59   #9
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

когда я говорил про кривые руки не имел виду что вы что то сделали не так по ссылкам - я говорил в целом. направление задано. если что то не работает, виноват программист
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 17.04.2015, 17:05   #10
Alek.Teslya
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Для комфортного использования mb_-функций нужно установить внутреннюю кодировку скрипта при помощи mb_internal_encoding.
Всё работает без проблем:
Всё заработало, спасибо большое за помощь
Alek.Teslya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки. Дана строка символов,среди которых есть двоеточие ( : ). Определить сколько символов ему предшествуют. Un1q Паскаль, Turbo Pascal, PascalABC.NET 2 11.12.2013 14:52
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Вывод строки символов ShockTrooper Общие вопросы C/C++ 2 19.03.2012 22:18
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41
Запрет ввода кирилических символов wnuks Microsoft Office Excel 1 12.07.2007 19:45