Кракозябрики при выводе отдельных букв
Если просто выводить например echo 'Ура, Америка рулит!';
Выводит всё на русском языке. Попробовал вывести отдельные буквы, выводят знаками вопроса. Что можно сделать?
<html>
<head>
<title>Пробная страница </title>
<style type="text/css">
</style>
</head>
<body>
<?php
$str = "Петя и Вася";
$first1 = $str{0};
$first2 = $str{2};
$len = strlen($str);
echo $first2,$first1; //Это выводит знаками вопроса
echo 'Привет'; //Это выводит нормально
?>
<body>
</html>
|
Скорее всего, Вы работаете в utf-8.
Этот код выводит не первую букву, а первый байт. Для восьмибитных кодировок (например, 1251) 1 буква = 1 байт и результат ожиаемый. Но для UTF-8 это не так, и, к примеру, 1 буква кириллицы = 2 байта. Ну а вопросик — потому что браузер не знает, что ему делать с «огрызком» буквы. wikipedia:UTF-8 |
Да, ютф-8 стоит по умолчанию, выход только использовать кодировку именно Windows1251?
|
Нет-нет-нет! Ни в коем случае, 1251 — прошлый век.
Вам поможет mb_substr():
$str = "Вася и Петя";
mb_internal_encoding("UTF-8");
echo mb_substr($str , 0, 1); // В
echo mb_substr($str , 1, 1); // а
|
<html>
<head>
<title>Пробная страница </title>
<style type="text/css">
</style>
</head>
<body>
<?php
$str = 'Петя и Вася';
//$first = $str{0}.$str{1};
//echo $first;
mb_internal_encoding("UTF-8");
$len = strlen($str);
echo mb_substr($str,0,4),' ',mb_substr($str,7,11);
?>
<body>
</html>
Так сработало. Вот блин ступил я,сори. Почему без этой строки не хочет пахать?
mb_internal_encoding("UTF-8");
|
Функции mb могут работаь с кучей различных кодировок. Надо же php сказать, какую именно кодировку мы от него просим, верно? |
Залей в корневую папку на FTP фаил с именем .htaccess и строкой внутри
adddefaultcharset utf-8 И будет все содержимое пониматься как UTF-8 Грубо говоря Апач будет показывать твой сайт в этой кодировке. Если пишешь в dreamweaver то там по умолчанию она, или как вариант отправляй сразу header с нужной кодировкой. |
0931454574,
И понту ты это сейчас написал ? тем более проблема то в другом. Смысл ты вообще поднимаешь решенные темы ? |
walik,
А твой ответ лучше? Следи за собой, будь осторожен(Цой) |
| Часовой пояс GMT +3, время: 01:43. |