Мы принимаем к оплате:
«Подарочный сертификат» от нашего Учебного Центра – это лучший подарок для тех, кто Вам дорог! Оплате обучение и подарите Вашим родным и близким обучение по любому из курсов!!!
«Сертификат на повторное обучение» дает возможность повторно пройти обучение в нашем Учебном Центре со скидкой 1000 рублей!
А также:
Как в php указать кодировку
Как установить кодировку UTF-8 для PHP файла
У меня есть PHP-скрипт:
http://cyber-flick.com/apiMorpho.php?method=getMorphoData&word=kot
Это показывает некоторые данные в текстовом формате:
CzÄ�Ĺ�Ä� mowy: rzeczownik Przypadek: dopeĹ�niacz Rodzaj: ĹźeĹ�ski Liczba: mnogaAs вы можете видеть вместо правильных символов, есть так «кусты». То, что я хотел бы сделать, это показать это так, чтобы люди видели в собственных UTF-8 персонажах браузера.
Вы можете инкапсулировать его в тегах HMTL и установить в мета-кодировке UTF-8, но поскольку данные, полученные от этого скрипта, будут обработаны дальше, я не хочу использовать какие-либо HTML-теги, это должен быть только результат обычного текста задавать.
Итак, есть ли способ сообщить браузеру, что этот файл UTF-8 не использует метатеги?
PS. Файл кодируется в UTF-8, и если я вручную меняю кодировку кодировки в своем браузере на UTF-8, он отображается нормально, но то, что я хочу усвоить, - это люди, которых не нужно делать.
Каков наилучший способ изменить кодировку текста в PHP?
Ваш вопрос непонятен, пытаетесь ли вы что-то кодировать? Если так utf8_encode - ваш друг. Вы пытаетесь определить, не нужно ли его кодировать? Если это так, utf8_encode по-прежнему остается вашим другом, потому что вы можете проверить, что результат такой же, как и вход!
ответ дан Don Neufeld 17 сент. '08 в 7:22
источник поделитьсяУчитывая поток байтов, вы должны знать, с какой кодировкой он должен начинать: - используйте заголовки mime для электронной почты, чтобы указать кодировку, http использует заголовки http для указания кодировки. Кроме того, вы можете указать кодировку в метатеге на веб-странице, но это не всегда соблюдается.
В любом случае, как только вы узнаете, какую кодировку вы хотите конвертировать, используйте iconv, чтобы преобразовать ее в utf8. посмотрите в разделе iconv php docs, там есть много хорошей информации.
А, Томас опубликовал ссылку, которую я искал. Обязательно прочитайте.
ответ дан DGM 17 сент. '08 в 7:32
источник поделитьсяСамый простой способ проверить правильность UTF-8:
-
Если разрешена только одна строка:
preg_match('/^.*$/Du', $value) -
Если разрешено несколько строк:
preg_match('/^.*$/sDu', $value)
Это работает для PHP >= 4.3.5 и не требует никаких модулей PHP, отличных от стандартного.
ответ дан Tometzky 17 сент. '08 в 17:16
источник поделитьсяразные кодировки в php
начинающим скриптописателям глубоко плевать на такое понятие, как кодировка. поэтому на сайтах иногда можно встретить жуткую кашу, когда данные из бд получаются в одной кодировке, страница формируется в другой, а сервером отдаётся третья. в результате страницу если и можно расшифровать, то минимум с 2 раз. итак, отчего же такая беда случается и как её побороть?
в русском сегменте чаще всего можно встретить так называемую windows-кодировку. называют её по разному: windows-1251, cp1251 или даже ansi. следующей идёт utf-8. можно встретить также название unicode, но это не совсем корректно, т. к. юникод общее название для целой группы (utf-8, utf-16, utf-32). и уж совсем раритетом является популярная koi8-r или просто кои-8 — некогда популярная линуксовская кодировка. конечно, можно в русском сегменте встретить и что-то другое, но это скорее является «баловством» автором.
основное отличие utf-8 от прочих (в первую очередь windows-1251 и koi8-r) — последние являются однобайтовыми, и максимальное количество символов, которые можно представить с помощью данных кодировок ограничего числом 256. само-собой, что для полноценного представления текста этого может быть недостаточно. и для html был найден выход — использование так называемых мнемоник. например, так:
© — ©
помимо того, что каждый такой символ описывается группой символов, код становится малочитаемым и работа с текстом усложняется. тут-то и приходит на помощь многобайтовая utf-8. очень удобно в одном тексте использовать буквы разных алфавитов и различные символы.
таким образом, наиболее комфортный набор начальных условий такой: кодировка базы данных, php-скриптов и html-страниц/js-скриптов должна быть одной и той же. конечно, можно использовать и разные, но в этом случае есть риск запутаться. при этом не важно, какая именно кодовая страница используется. если сайт будет только для русскоязычной аудитории, windows-1251 будет вполне достаточно. иначе логичным выбором будет utf-8. с первым вариантом всё более-менее понятно. а для многобайтной кодировки потребуются некоторые телодвижения.
при работе с utf-8 стандартный виндусовский notepad не подойдёт! дело в том, что данный редактор, при сохранении файла в этой кодировке, добавляет в начало сигнатуру — 3 символа, так называемый bom (byte order mark), по которому при открытии файла можно определить кодировку. лучше выбрать другой редактор: notepad2 или notepad++. в настройках обязательно выбрать сохранение без сигнатуры.
следующий важный шаг — работа с базой данных. крайне желательно, чтобы кодировка базы/таблицы/текстового поля совпадали с кодировкой скрипта (это может быть cp1251 или utf-8, или что-нибудь другое). если данные из базы получаются в виде «зюков», скорее всего кодировка соединение отличается от данных, хранящихся в бд. следующий запрос поможет побороть ситуацию (выполнить сразу после соединения с базой):
если на сайте используется windows-1251, следует указать её — cp1251.
в общем-то, нет ничего сложного. единственно, стандартные функции php не предназначены для работы с многобайтовыми строками. но есть стандартные библиотеки, которые помогут исправить ситуацию: iconv и mbstring. для регулярных выражений также существует необходимый переключатель, который активируется с помощью модификатора u.
что же, данные из базы получены, скрипты написаны по всем правилам. остаётся отослать правильный заголовк и вывести код страницы в браузер пользователя. заголовок посылаем так:
header('Content-Type:text/html; charset=utf-8');если используется однобайтовая кодировка, то значение для charset будет другим — windows-1251. после этого проблем остаться не должно.
несколько простейших примеров работы с utf-8 на php:
пример 1: iconv, количество символов в строке
$s = 'строка'; # строка в utf-8 $cnt1 = strlen($s); # будет содержать значение 12 $cnt2 = iconv_strlen($s, 'UTF-8'); # правильное значение, 6пример 2: mbstring, количество символов в строке
$s = 'строка'; # строка в utf-8 $cnt1 = strlen($s); # будет содержать значение 12 $cnt2 = mb_strlen($s, 'UTF-8'); # правильное значение, 6пример 3: регулярные выражения, поиск и замена
$s = 'Строка'; # строка в utf-8 $s = preg_replace('/стр/i', 'д', $s); # замена не произойдёт $s = preg_replace('/стр/iu', 'д', $s); # результат слово докамодификатор i предписывает регистронезависимый поиск, а модификатор u говорит движку регулярных выражений работать с utf-8 строками.
если кто-то скажет, что php не может работать с utf-8, он будет не прав. уже несколько лет делаю все свои проекты в этой кодировке и проблем не было совершенно. поисковые системы сами давно используют эту замечательную кодировку.
(1 голосов, в среднем: 5,00 из 5) Загрузка...