|
|
|
| Сейчас кодировка utf8 становится все более популярной, становится стандратом.. я думаю это всем известно. Но вот возникают вопросы.. 1. как все-таки правильно, "utf8" или "utf-8"?)) (ну эт не столь важно)
2. Что должна включать в себя полная поддержка utf8 какой-либо CMS? Я так понимаю хранение данных в базе mysql в этой кодировке.. а вот все файлы, которые хранят сценарии и не только (скажем шаблоны), тоже нужно перекодировать в utf8, скажем с ansi?
3. Если будет полная поддрежка utf8, то нужно будет использовать какие-то специальные строковые функции для работы с рус. символами в этой кодировке? Стандартные функции не подойдут? (substr() например)
4. Для чего все-таки нужен mb_string? Что именно он делает?
5. Как сделать запись файла в этой кодировке? А то, fwrite() мне только в ansi сохраняет...
6. Где можно почитать именно о самой кодировке в целом, все принципы кодирования и т.п.? А то в инете нахожу только проблемы возникающие при работе с этой кодировкой, а толкового описания нет. | |
|
|
|
|
|
|
|
для: FireTiger
(24.07.2008 в 00:52)
| | 3. Функции из mb_string, iconv
4. mb_string (Multibyte String) умеет работать со строками в многобайтных кодировках, в том числе со строками в UTF-8.
Стандартные же функции рассчитаны на работу с однобайтной кодировкой.
strlen - возвращает кол-во байт (только для однобайтных кодировок это значение совпадает с количеством символов).
mb_strlen - возвращает кол-во символов.
5. Так же как и в любой другой кодировке. Функция fwrite записывает то, что получает во втором параметре, там может быть любая последовательность байт.
6. http://ru.wikipedia.org/wiki/UTF-8 | |
|
|
|
|
|
|
|
для: sms-send
(24.07.2008 в 01:09)
| | Спасибо Вам за помощь, но вот еще хочу спросить. Все русские символы мне всегда нужно как-то кодировать в скрипте? Например, я хочу проверить данные на допустимые символы вот так:
<?php
if (!preg_match("/^[a-zа-я0-9\s]+$/i", $source)) {
...
}
?>
|
Но вот если строка $source будет состоять из русских символов, то функция не срабатывает... в чем-то есть ошибка... скорее в моем не понимании всей сути кодировок))), но все-таки, как правильно работать с русскими символами в этой кодировке? | |
|
|
|
|
|
|
|
для: FireTiger
(24.07.2008 в 01:35)
| | Чтобы PСRE работали с utf-8 , в шаблоне нужно ставить в хвост специальный модификатор u. | |
|
|
|
|
|
|
|
для: FireTiger
(24.07.2008 в 01:35)
| | Ну вы даете)))
Ниже же написал, что нужно добавить флаг u. | |
|
|
|
|
|
|
|
для: sp10
(24.07.2008 в 01:43)
| | Прикиньте, я прочитал ваше сообщение внимательно, поставил флаг u и ничего не сработало! Вот и спросил! Может я что-то не так сделал, но ... где тут можно ошибится?
<?php
if (!preg_match("/^[a-zа-я0-9\s]+$/ui", $source)) {
...
}
?>
|
Warning: preg_match(): Compilation failed: invalid UTF-8 string at offset 6 in | |
|
|
|
|
|
|
|
для: sp10
(24.07.2008 в 01:43)
| | Почему не работает даже такой метод? Какой есть выход?
Плз, нужно разобратсья | |
|
|
|
|
|
|
|
для: FireTiger
(24.07.2008 в 10:58)
| | Код, который вы привели у меня не вызывает ошибки.
Я ради эксперимента сохранил страницу в формате ANSI, и, как вы думаете? Возвращает эту же ошибку.
Если используете Dreamweaver, измените Edit->Preferences->New Document->Default Encoding на UTF-8 и заново создайте скрипт - никакой ошибки не будет. | |
|
|
|
|
|
|
|
для: FireTiger
(24.07.2008 в 10:58)
| | У вас сам скрипт в какой кодировке сохранен? | |
|
|
|
|
|
|
|
для: FireTiger
(24.07.2008 в 00:52)
| | Во-первых, в начале скрипта нужно вписать такое:
header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
|
Первый обеспечит то, что браузер корректно обработает входящие данные в utf-8. А второй обеспечит работу с функциями mb_...: strlen, strpos, strrpos, substr, strtolower, strtoupper, substr_sount, send_mail. Если данные у вас в utf-8, обычные строковые функции обработают их некорректно.
И ещё семейство mb_ereg, но вместо него лучше использовать обычные preg, но с добавлением флага u.
В базе данных выбирайте кодировку utf_unicode_ci.
Если используете много инклудов, могут быть проблемы в IE. Поменяйте шрифт на Tahoma. В некоторых языках корректное отображение данных в utf-8 возможно только в этом шрифте. Устранение этой проблемы обещают в PHP6. | |
|
|
|
|
|
|
|
для: sp10
(24.07.2008 в 01:21)
| | Инклуды и IE как связаны?
И проблемы со шрифтами браузера с PHP?)) | |
|
|
|
|
|
|
|
для: sms-send
(24.07.2008 в 01:26)
| | IE, если использовать шаблонную структуру с множеством include_once, при написании PHP-файлов в utf-8, отображает квадратики вместо русских, да и вообще многих неанглийских символов.
Вот нашел эту страницу, когда столкнудся с этой проблемой:
http://forum.dklab.ru/viewtopic.php?p=85211 | |
|
|
|
|
|
|
|
для: sp10
(24.07.2008 в 01:35)
| | Это проблема не PHP, а редакторов, которые вставляют в строку UTF-8 метку BOM, она попадает перед стартовым тегом <?php и заставляет сервер отправлять заголовки и начать вывод тела страницы. Просто нужно отказаться от такой медвежьей услуги (я про вставку BOM), либо выбрать другой редактор. | |
|
|
|
|
|
|
|
для: sms-send
(24.07.2008 в 01:42)
| | В языках, где используются буквы с закорючками (скандинавские, тюркские) IE не отображает эти буквы - сплошь квадратики. Даже писал на Блокноте - не помогало. Решение нашел на одном из форумов - используйте Tahoma в CSS в качестве дефолтного шрифта. И это единственное решение для таких ситуаций. | |
|
|
|
|
|
|
|
для: sp10
(24.07.2008 в 01:56)
| | Наверно, всё-таки это проблема IE, а не PHP. | |
|
|
|
|
|
|
|
для: sp10
(24.07.2008 в 01:56)
| | Вероятно, на компьютерах пользователей, для которых эти языки нативны, и IE будет работать.
Хотя sms-send прав, на нем свет уже давно клином не сходится. | |
|
|
|
|
|
|
|
для: sms-send
(24.07.2008 в 01:26)
| |
И проблемы со шрифтами браузера с PHP?))
|
Поверьте, могут быть связаны. | |
|
|
|