@yagyar001

Почему php выводит вопросительные знаки вместо русских букв?

Начал изучать php и уже проблемы. Кодировка везде utf 8. В файле .htaccess прописано AddDefaultCharset UTF-8. Причем некоторые буквы он выводит нормально. А некоторые знаками.
И судя по всему php вывел мне три переменных, вместо указанных 4. Почему?
5bce99ac9a966139200744.png5bce99d367b82834850951.png
<?php 

	$var = 'aбвгдеёжзийклмнопрстуфхцчшщъыьэюя';

	echo $var[1];
	echo $var[2];
	echo $var[4];
	echo $var[18];


?>
  • Вопрос задан
  • 3474 просмотра
Пригласить эксперта
Ответы на вопрос 4
@vardoLP
Ват ю сэй эбаут май мама?!
файл сохраните в кодировке utf-8
Ответ написан
ubukulov
@ubukulov
Веб-разработчик
Понятно. Судя по вашему коду вижу у вас переменная $vars это не массив, а строка.

А вы пытайтесь получить как массив.
$vars = [
'aбвгде', 'еёжзийк', 'лмнопрс', 'туфхцчш', 'щъыьэюя'
];
echo $vars[0];
echo $vars[1];
echo $vars[2];
echo $vars[3];
Ответ написан
С кирилликой такое не прокатит.

$s  =  'абвгдежз';
$s  =  preg_split('//u', $s, -1, PREG_SPLIT_NO_EMPTY);
echo $s[0]; // тип $s - Array


Но это решение бессмысленно в контексте урока :)
Ответ написан
Комментировать
@BurmaDesign
Да, для новичков-самоучек это прям проллема-проблема)))
Индексом (с помощью []) вы сможете вытащить и напечатать только английские буквы ( так как они занимают в коде всего один байт и один символ латиницей равен одному байту). Нестандартные символы, в том числе и русские - занимают два байта и вытащить их корректно не выйдет. Тут можно воспользоваться функцией mb_substr($строка, $индекс знака, 1);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы