Мы принимаем к оплате:

«Подарочный сертификат» от нашего Учебного Центра – это лучший подарок для тех, кто Вам дорог! Оплате обучение и подарите Вашим родным и близким обучение по любому из курсов!!!

«Сертификат на повторное обучение» дает возможность повторно пройти обучение в нашем Учебном Центре со скидкой 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: mnoga

As вы можете видеть вместо правильных символов, есть так «кусты». То, что я хотел бы сделать, это показать это так, чтобы люди видели в собственных 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) Загрузка...


Смотрите также



Компьютерные курсы по направлениям:

Для начинающих


A

Компьютер для начинающих: Word, Excel, Access и другие программы!

Графические пакеты


B

Популярные пакеты Adobe Photoshop, CorelDraw, ArchiCAD, AutoCAD и другие!

WEB + анимация


C

Курсы по созданию сайтов, WEB-дизайну и крутой анимации в Adobe Flash!

Бухгалтерия + делопроизводство

Сетевые технологии


E

Курсы сборки ПК, системных администраторов и защиты информации!