[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кодировка по умолчанию в браузере не та
Guest
<META http-equiv=content-type content="text/html; charset=utf-8">
а браузер по умолчанию открывает в 1251.. почему? сам файл php utf-8 без BOM



Спустя 12 минут, 45 секунд (11.03.2012 - 22:36) Ser18 написал(а):
В начале файла напишите

header("Content-type: text/html; charset=utf8");

Спустя 1 час, 16 минут, 7 секунд (11.03.2012 - 23:52) ADiel написал(а):
можно еще в .htaccess добаить AddDefaultCharset utf-8

Спустя 11 часов, 4 минуты, 53 секунды (12.03.2012 - 10:57) TS написал(а):
Здравствуйте!
вариант с
header("Content-type: text/html; charset=utf8");

не сработал - пишут, что заголовок уже отправлен.
а вот

.htaccess добаить AddDefaultCharset utf-8

сработало. Спасибо :)

Но возникла новая проблемка
Итак:
Файл в utf-8 без BOM
Денвер последняя версия
рядом с файлом .htaccess со строкой AddDefaultCharset utf-8
испробованные браузеры - ие9 и файрфокс 10.

содержимое файла test.php
<?php
$name='Вася';
echo $name."<br>";
echo $name[1];
?>

На экран выводит
Вася

если номер в скобках поставить другим, то может вообще не быть символа.. или опять вопрос..
почему так происходит? целиком слово нормально выводится, а посимвольно не работает..

Спустя 6 минут, 26 секунд (12.03.2012 - 11:03) Rigel написал(а):
хм, точно ли utf без BOM?
в notepad++ попробуй преобразовать.

Спустя 4 минуты, 27 секунд (12.03.2012 - 11:08) Guest написал(а):
да. без ВОМ ютф-8 как раз там это и делал.

Спустя 4 минуты, 14 секунд (12.03.2012 - 11:12) Rigel написал(а):
Guest
да, странно, воспроизвел у себя - тоже самое smile.gif
первый раз такое вижу

Спустя 3 минуты, 29 секунд (12.03.2012 - 11:15) Visman написал(а):
Получается, что берется байт под номером 1, а не символ строки под номером 1.

Спустя 2 минуты, 47 секунд (12.03.2012 - 11:18) alex12060 написал(а):
Русский символ из UTF-8 состоит из 2-х байтов, Японский иероглиф - 3 байта.
Вот поэтому и косяк.

Спустя 17 минут, 46 секунд (12.03.2012 - 11:36) Guest написал(а):
Цитата (Visman @ 12.03.2012 - 08:15)
Получается, что берется байт под номером 1, а не символ строки под номером 1.

спасибо всем за разъяснение.
теперь понятно.

но появляется соответствующий вопрос - как же тогда брать значение конкретного по номеру символа в строке?

для поиска в цикле надо..
если первый символ в строке равен тому, то..
если нный символ в строке равен тому, то..


Спустя 10 минут, 31 секунда (12.03.2012 - 11:47) Visman написал(а):
mb_substr(строка, номер позиции, 1)

Спустя 47 секунд (12.03.2012 - 11:47) ADiel написал(а):

<?php
$str = "Строчка";

preg_match_all("/.{1}/u",$str,$arr );
var_dump($arr);


Выводит


array(1) {
[0]=>
array(7) {
[0]=>
string(2) "С"
[1]=>
string(2) "т"
[2]=>
string(2) "р"
[3]=>
string(2) "о"
[4]=>
string(2) "ч"
[5]=>
string(2) "к"
[6]=>
string(2) "а"
}
}


Кстати, из string(2) видно, что действительно 2 байта = 1 русский символ

Спустя 1 минута, 20 секунд (12.03.2012 - 11:49) Winston написал(а):
$str = "Строчка";
$array = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($array);

Спустя 3 минуты, 26 секунд (12.03.2012 - 11:52) ADiel написал(а):
Вариант от Winston удобнее, т.к. можно вставить preg_split прямо в foreach

Спустя 2 дня, 39 минут, 42 секунды (14.03.2012 - 12:32) nikki4 написал(а):
спасибо за ответ :)
плюсик пока не могу ставить 10 постов надо..
вот заодно и спрошу:

что значит регулярное выражение
'//u'
?
никак не могу разобраться что оно означает..хотя что делает догадываюсь

Спустя 9 минут, 22 секунды (14.03.2012 - 12:41) ADiel написал(а):
Это пустая регулярка с ключом utf
Режет посимвольно
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.