- Заметки Лёвика
- web программирование, администрирование и всякая всячина, которая может оказаться полезной
- PHP iconv — кодировка из utf-8 windows-1251
- Если не работает iconv
- iconv array для массива
- Комментарии (3) к записи “PHP iconv — кодировка из utf-8 windows-1251”
- Кодировка windows 1251 в сайтостроении
- Кодировка windows 1251 в html
- Кодировка windows 1251 в PHP
- Кодировка windows 1251 в htaccess
- Кириллица в URL
- Решение
- Как в php закодировать русские символы для url?
- Как правильно работать с кириллицей в url?
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками php url google кириллица или задайте свой вопрос.
- Похожие
- Подписаться на ленту
Заметки Лёвика
web программирование, администрирование и всякая всячина, которая может оказаться полезной
PHP iconv — кодировка из utf-8 windows-1251
При помощи функции php iconv (строго говоря, это не совсем функция PHP, она использует стороннюю библиотеку (есть iconv.dll и php_iconv.dll или iconv.so), которой может не быть на хостинге) легко преобразовать кодировку (например, из windows-1251 в utf-8 и наоборот:
$s = iconv( «cp1251″,»UTF-8», $s);
$s = iconv(«UTF-8», «windows-1251», $s);
Однако, если не работает iconv на хостинге, а преобразовать текст из одной кодировки в другую необходимо, можно воспользоваться сторонними функциями (на самом деле, встречал несколько вариантов — какой из них лучше.. или точнее “более рабочий” — не скажу).
Про преобразование UFT-8 сущностей я уже писал ранее , однако иногда требуется наоборот перевести текст из cp1251 в utf-8 — например.
Если не работает iconv
function iconv ($in_charset, $out_charset, $str) string — для преобразования из Windows в UTF-8 выполняем один из вызовов
iconv( «cp1251″,»UTF-8», $s);
iconv( «windows-1251″,»UTF-8», $s);
выдаёт пустую строку (если в $s нет английских символов — они в любой кодировке отображаются одинаково) на некоторых хостингах можно попробовать использовать функцию mb_convert_encoding — у неё другой порядок аргументов!
function mb_convert_encoding ($str, $to_encoding, $from_encoding = null) string
Т.е. чтобы преобразовать текст из кодировки windows-1251 в UTF-8 следует выполнить:
mb_convert_encoding($s,»UTF-8″,»windows-1251″);
iconv array для массива
В некоторых ситуациях преобразовать одномерный или многомерный массив из одной кодировки в другую (например, из utf8 в windows-1251) с сохранением ключей массива. Для решения, можно использовать несколько способов.
// если не требуется сохранять предыдущий массив, для экономии
// передаем его по ссылке, происходит замена внутри
function utf8to1251(&$text) <
$text = iconv(«utf-8», «windows-1251», $text); //without return
>
array_walk_recursive($array, «utf8to1251»);
Или, если требуется оставить исходный массив без изменений — можно воспользоваться:
$newArray = array_map(create_function(‘$v’, ‘return iconv(«utf-8», «windows-1251», $v);’), $oldArray);
Метки: iconv
Опубликовано Пятница, Октябрь 21, 2011 в 15:02 в следующих категориях: Без рубрики. Вы можете подписаться на комментарии к этому сообщению через RSS 2.0. Вы можете оставить комментарий. Пинг отключен.
Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)
html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)
ссылка (для отправки по почте)
Комментарии (3) к записи “PHP iconv — кодировка из utf-8 windows-1251”
Как быть с запросом select к базе mssql не понимает кирилицу
“select
[Название]
,[номер]
, [Removed]
from imdb.dbo. Оконечное оборудование “;
Следует привести столбцы (или всю базу данных сразу) к соответствующему сравнению (кодировке)
ALTER DATABASE COLLATE Cyrillic_General_CI_AS
Или использовать Nvarchar
declare @test TABLE
(
Col1 varchar(40),
Col2 varchar(40),
Col3 nvarchar(40),
Col4 nvarchar(40)
)
INSERT INTO @test VALUES
(‘иытание’,N’иытание’,’иытание’,N’иытание’)
SELECT * FROM @test
В старом скрипте на php 5.3 работает
function conv($text) <
return iconv(’UTF-8′, ‘WINDOWS-1251′, $text);
>
Если изменяю версию php 5.6 то не перекодируется. Не подскажете?
Кодировка windows 1251 в сайтостроении
Кодировка windows 1251 была создана в начале 90 годов для русификации программных продуктов, выпускаемых корпорацией Microsoft :
- 0xFF (25510) – это код, который зарезервирован для символа «я». В программах, которые не поддерживают чистый 8-ой бит, часто возникают непредсказуемые проблемы;
- Нет псевдографики, которая присутствует в KOI8 , CP866 .
Ниже приведены символы из Code Page 1251 или сокращенно СР1251 ( числа под символами являются кодом в шестнадцатеричной системе такого же символа в Юникоде ):
Кодировка windows 1251 в html
Нередко у web-разработчиков и блогеров, обладающих различной квалификацией возникает проблема с кодировкой страниц: вместо подготовленного текста появляются неизвестные, нечитаемые символы. Чтобы разобраться с данной проблемой, необходимо понимать суть термина « кодировка страницы ».
Текст в памяти компьютера хранится в виде определенного количества байт, а не в том виде, в котором он отображается в текстовом редакторе. Каждый байт является кодом, который соответствует одному символу. Для того чтобы текст на странице отображался как следует, нужно сообщить браузеру, какую таблицу кодов для расшифровки и отображения он должен использовать.
Таблица кодировок не является универсальной, то есть, для расшифровки текста необходимо использовать ту, которая соответствует кодировке символов:
— между тегом и закрывающим его нужно прописать — исходя из этой строки, браузер будет использовать символы русского алфавита для отображения текста на странице.
Кодировка windows 1251 в PHP
Ни для кого не является тайной, что генерация страниц проходит путем выборки и использования какой-то части информации, которая хранится в базе данных. При написании сайта на PHP , чаще всего это mysql :
Для согласования расшифровки необходимо выполнить функцию mysql_query(«SET NAMES cp1251») – это означает, что преобразование из машинного кода будет осуществляться согласно таблице cp1251 .
Кодировка windows 1251 в htaccess
При создании сайта, предварительно настроив кодировки в шаблонах и базах данных, все равно может всплыть проблема некорректного отображения информации в браузере.
Для того чтобы для веб-ресурса была задана кодировка виндовс-1251 , необходимо найти ( или создать ) файл .htaccess . Это файл, который хранит в себе дополнительные настройки и описания конфигураций web-сервера.
В нем для установки кодировки следует прописать следующие строки:
- DefaultLanguage ru;
- AddDefaultCharset windows-1251;
- php_value default_charset «cp1251».
Таким образом, для корректного отображения текста должны совпадать его кодировка и таблица кодов, с помощью которой браузер будет расшифровывать символы. Для текстов, написанных на славянских языках, необходима win 1251 кодировка. Важно помнить, что элементы страниц и баз данных должны быть описаны с помощью одной таблицы кодов.
Кириллица в URL
File_get_contents и кириллица в url
Нужно cкачать файл по url, который содержит кириллицу и пробелы, например.
Текущий url, дублирование переменных в url
А не подскажет ли мне кто нибудь, как избавиться от дублирующихся переменных get? К примеру есть.
ЧПУ url, красивый url
Сразу прошу прощения если я неправильно написал в заголовке темы. Вообщем есть у меня ссылка: .
Кириллица в файлах
Работал с файламив в рhp — возникли проблемы с русской кодировкой — пусть дан некий файл -.
Решение
У Вас кодировка одинакова? Я имею ввиду страницу и передаваемый параметр в ссылке?
Вообще, при передаче русского текста его сначала нужно закодировать urlencode(); и при обработке переданного сначала декодировать urldecode();
Добавлено через 2 минуты
Т.е. примерно так:
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Кириллица в DomPDF
Родненькие, ну спасите меня. Не могу понять, что надо сделать, чтобы у меня DomPDF генерил документ.
mb_strpos + кириллица
Здравствуйте, друзья! Возникла следующая проблема: Для создания простенького парсера требуется.
Кириллица в MySQL
Делаю так: mysql_query(«INSERT INTO posts(message) VALUES(‘$message’)»); $message — строка с.
латиница кириллица
Добрый день мой файл принимает от пользователя строку и проверяет RegExp .
Как в php закодировать русские символы для url?
Опции темы
Допустим есть слово — «вебмастерс», как в php его закодировать для url и получить вот такую строку:
- 0
Человек-откат
|
|
PS за справкой php.su
|
|
Как правильно работать с кириллицей в url?Решил использовать кириллицу в url . Ссылки на картинки и сами url вида site.com/картинка.jpg и site.com/news/главная-новость-дня я вывожу из бд обычным способом. Нужно ли текст кодировать, декодировать как написано тут? Текст отображается как надо в ссылках, правда, одно но, при копировании адреса изображения и последующей вставки куда-нибудь, почему-то вставляется в закодированном виде, но, при переходе по ней обращается обратно в нормальную кириллицу. Со ссылками на страницы сайта, такого нет. 2 ответа 2Большинство браузеров умеют автоматически кодировать адреса если это нужно. А современные браузеры умеют еще и декодировать URL в адресной строке для показа пользователю (при этом запросы на сервер идут всегда с кодированным URL). Но на это лучше не полагаться — ведь разные браузеры могут использовать разные кодировки. И если эта кодировка не совпадает с той, которую использует сервер при декодировании URL — все «поломается». Поэтому лучше кодировать URL на стороне сервера, где вы точно знаете ту кодировку, в которой потом будете декодировать. Я использую urldecode urlencode для get post запросов, для остальных случаев думаю не нужно, то есть когда передаю данные в ссылке, потому что, даже один пробел может попортить много нерв. Всё ещё ищете ответ? Посмотрите другие вопросы с метками php url google кириллица или задайте свой вопрос.ПохожиеПодписаться на лентуДля подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS. дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.4.16.39093 |