- Iconv не перекодирует.
- Заметки Лёвика
- web программирование, администрирование и всякая всячина, которая может оказаться полезной
- PHP iconv — кодировка из utf-8 windows-1251
- Если не работает iconv
- iconv array для массива
- Комментарии (3) к записи “PHP iconv — кодировка из utf-8 windows-1251”
- Баг iconv? windows-1251 => utf-8 и Русская «Р»
- Krishna
- Krishna
- Iconv не срабатывает для кодировки «cp-1251»
- Не получается iconv cp1251 > utf8
Iconv не перекодирует.
Здрасте. Хочу исправить кодировку cue. Пишу
iconv -f iso-8859-15 -t windows-1251 -o out.cue in.cue и выдает: iconv: недопустимая входная последовательность в позиции 107, если добавить после iconv -c, то в файл русские буквы не пишутся.
Причем если я выбираю в онлайн перекодировщике те же кодировки и вставляю текст из cue, то все идеально переводится. Что не так?
Пример текста: PERFORMER «Êîðîëü è Øóò» TITLE «Òåíü Êëîóíà (2008, Íèêèòèí)»
iconv понимает, что акцентированные латинские буквы в русские никак не переконвертировать. Разные они. Как у тебя на самом деле все устроено, скажи лучше. Если там кодировка UTF-8, то надо делать что-нибудь такое:
Enca выдаёт: enca ‘/home/user/Music/file.cue’ MS-Windows code page 1251
А если и правда она однобитная в исходном файле, то вообще
Благодарю, добрый человече, все по русски теперь. Отчего такое быть может? Я уже в этих кодировках запутался.
iso-8859-15 и windows-1251 имеют обсалютно различный набор символов и не могут быть перекодированы одна в другую, что делает онлайн перекодировщик это у него нужно спросить .
Причины появления у тебя файлов в кодировке cp1251 мне нневедомы, увы. Наверное, с пользователями виндов якшаешься 🙂
Заметки Лёвика
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 то не перекодируется. Не подскажете?
Баг iconv? windows-1251 => utf-8 и Русская «Р»
tеam neko
Krishna
Продался Java
Тут было вот что: ))
Нижеприведенный скрипт при переводе слова «Расширенный» из 1251 в утф8 выдает нечто, что при обратном переводе обращается в пустое место. Грешу на iconv и большую русскую «Р».
iconv support enabled
iconv implementation libiconv
iconv library version 1.9
PHP 4.3.10 Build Date Jan 25 2005 23:20:29
ОС FreeBSD 5.3 Apache 1.3.33
iconv установлен как extension
tеam neko
iconv( «utf-8», «windows-1251», iconv( «windows-1251», «utf-8», $some ) );
а так ты пробовал?
без форм?
подобные баги в iconv маловероятны
Krishna
Продался Java
Я собственно пытаюсь найти ошибку и вполне допускаю, что она не в iconv
Остальные слова скрипт конвертил нормально.
Дело в пробеле?
Но он вроде бы передается нормально. :-\
iconv( «utf-8», «windows-1251», iconv( «windows-1251», «utf-8», ‘Работа’) );
да, нормально работает
Я так понимаю некий служебный символ образуется? Вразумите, как заставить обрабатывать скрипт любые тексты.
Iconv не срабатывает для кодировки «cp-1251»
Использование iconv для преобразования из windows-1251
Синтаксис мне подсказали: , . А какой для неё код для 1251?
Как написать регулярное выражение для выдергивания английских букв и символов: «+», «,», «:», «-«, » «, «!», «?» и «.»
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и.
Для каждой строки найти слова, которые не имеют ни одного из букв: «l», «k», «r», «s» i «j»
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются.
Переключите браузер на кодировку UTF-8 и этот текст будет отображен правильно.
Добавлено через 1 минуту
Вот прямо на этой странице переключил кодировку и увидел ваш текст «Тема».
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
MySQL: «UTF-8» vs «Windows-1251»
Сразу к делу; Есть БД-MySQL+phpmyadmin(3.2.3); Таблица 3 поля (id, login, password); В каждом.
Определить предыдущий и последующий символ для символа «F» по таблице кодировки.
Задание 2 Составить программу, которая бы определила предыдущий и последующий символ для сим-вола.
Загрузка данных из XML в TreeView и ошибка «Недопустимый знак для указанной кодировки»
Господа прошу помощи. Ситуация такая имею на форме TreeView, DataGridView,TextBox. в форме: .
Не получается iconv cp1251 > utf8
Не могу разобраться в чем причина, код
а поточнее не подскажите? попробовал уже разные варианты — никак не получается, вроде размеры везде нормально задал и типы и кодировки по разному писал.
куда уж точнее? проверяй код возврата iconv(). возможные варианты в моем каменте выше.
Проверяй и обрабатывай результат iconv, в случае успеха выведи обычным printf-ом, или что там у тебя вместо него, первые байты исходной и полученной строки. Как маленький, ей-богу.
ахаха, wolverin , точно! это тоже 🙂
но проверку return values, в любом случае, никто не отменял! )
БХААААААААА )))) ТОЧНО. СПАСИБО.
Вообще, извини что радость нахождения баги отобрал. Очень приятная разновидность ошибок. И вроде и глупость мелкая, и день целый потратил, и вроде не зря. Мне такие баги нравятся. Особенно, когда не я их сажаю.
Так нельзя делать! НИ В КОЕМ СЛУЧАЕ! utf-8 символ может быть от 1 до 6 байт. Размер узнаётся благодаря соответствующей функции перекодировки (ртфм по iconv)