Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Кракозябрики при выводе отдельных букв (https://javascript.ru/forum/server/17020-krakozyabriki-pri-vyvode-otdelnykh-bukv.html)

Kasperskiy 02.05.2011 23:46

Кракозябрики при выводе отдельных букв
 
Если просто выводить например 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>

subzey 02.05.2011 23:54

Скорее всего, Вы работаете в utf-8.

Этот код выводит не первую букву, а первый байт. Для восьмибитных кодировок (например, 1251) 1 буква = 1 байт и результат ожиаемый. Но для UTF-8 это не так, и, к примеру, 1 буква кириллицы = 2 байта.

Ну а вопросик — потому что браузер не знает, что ему делать с «огрызком» буквы.

wikipedia:UTF-8

Kasperskiy 02.05.2011 23:57

Да, ютф-8 стоит по умолчанию, выход только использовать кодировку именно Windows1251?

subzey 03.05.2011 00:03

Нет-нет-нет! Ни в коем случае, 1251 — прошлый век.

Вам поможет mb_substr():
$str = "Вася и Петя";
mb_internal_encoding("UTF-8");
echo mb_substr($str , 0, 1); // В
echo mb_substr($str , 1, 1); // а

Kasperskiy 03.05.2011 00:24

<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");

subzey 03.05.2011 01:10

Магия.

Функции mb могут работаь с кучей различных кодировок. Надо же php сказать, какую именно кодировку мы от него просим, верно?

0931454574 12.05.2011 16:41

Залей в корневую папку на FTP фаил с именем .htaccess и строкой внутри
adddefaultcharset utf-8

И будет все содержимое пониматься как UTF-8
Грубо говоря Апач будет показывать твой сайт в этой кодировке. Если пишешь в dreamweaver то там по умолчанию она, или как вариант отправляй сразу header с нужной кодировкой.

walik 12.05.2011 18:50

0931454574,
И понту ты это сейчас написал ? тем более проблема то в другом. Смысл ты вообще поднимаешь решенные темы ?

0931454574 13.05.2011 10:03

walik,
А твой ответ лучше? Следи за собой, будь осторожен(Цой)


Часовой пояс GMT +3, время: 06:10.