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