Iconv для windows не работает

Заметки Лёвика

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 и на страницы сайта)

Читайте также:  Не сохраняются настройки сети windows 10

ссылка (для отправки по почте)

Комментарии (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 не работает

Создание игр на Unreal Engine 4

Данный курс научит Вас созданию игр на Unreal Engine 4. Курс состоит из 12 модулей, в которых Вы с нуля освоите этот движок и сможете создавать самые разные игры.

В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров. Дополнительно, почти к каждому уроку идут упражнения для закрепления материала.

Помимо самого курса Вас ждёт ещё 5 бесплатных ценных Бонусов: «Динамическая смена дня и ночи», «Создание динамической погоды», «Создание искусственного интеллекта для NPC», «Создание игры под мобильные устройства» и «Создание прототипа RPG с открытым миром».

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Моя группа

Зачем Вы изучаете программирование/создание сайтов?

Программирование на C++ для начинающих

Бесплатный курс по C++ даст Вам отличный старт для начала программирования на этом языке. В курсе Вас ждёт множество уроков (больше 4-х часов видео), исходников и упражнений.

Чтобы получить Видеокурс,
заполните форму

Создание лендингов на заказ

Придя на семинар:

— Вы узнаете мою историю, как я начинал создавать сайты на заказ.

— Вы узнаете, почему сейчас самое время начать этим заниматься.

— Вы получите очень подробный пошаговый план действий по созданию и продвижению своей Web-студии с комментариями, в том числе, и в виде PDF.

— Вы узнаете, как и где найти сотрудников, как общаться с заказчиками.

— Вы узнаете, как максимально автоматизировать бизнес-процессы.

После семинара Вы уже самостоятельно сможете, следуя простому и подробному плану, открыть свою Web-студию и получить первые заказы.

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 для Windows — Русские субтитры

  • Русские субтитры
  • >Переводы
  • >Полезные линки
  • Правила форума
  • Просмотр новых публикаций

ICONV для Windows Перекодировка текстовых файлов

#1 Drunkenmunky

  • Группа: Members
  • Сообщений: 142
  • Регистрация: 24 Май 11
  • Пол: Мужчина
  • Город: Николаев
  • Страна:

Утилита и набор библиотек предназначена для изменения кодировки текстовых файлов.
В том числе в пакетном режиме.

Установка.
Со страницы скачиваем и запускаем последнюю версию(на сегодня с 2004 года это 1.9.2 )

После чего задаём переменную PATH в которую необходимо поместить путь к исполняемым файлам установленной программы(C:\Program Files\GnuWin32\bin).
Почему это не делается при установке автоматически, затрудняюсь сказать. Возможно таким образом разработчик пытается показать, что в Linux(откуда портирована программа) это считается тривиальной задачей, понятной даже начинающему пользователю.

Для Windows 7 это выглядит таким образом:

Для Windows XP таким:

(Обратите внимание на разделители между значениями переменной, если они есть. Если нет то используйте точку с запятой)

Можно поступить проще и скопировать содержимое папки (но не её саму), а это четыре файла, «C:\Program Files\GnuWin32\bin» в каталог C:\WINDOWS.
Но это считается плохим тоном.

Всё. Можно работать.

Обработка одного файла.

Предположим, что в папке D:\Documents\Мои видеозаписи\movies имеется папка с неким сериалом.

В которой, помимо видеофайла(ов) имеется файл субтитров в кодировке UTF-8. Скажем: «серия_1.srt».
Обратите внимание, что названия перекодируемых файлов не должны содержать пробелов, и, вероятно, спецсимволов.
Что, видимо, есть недосмотр разработчика.

И переходим в каталог D.

(Здесь по умолчанию мы перейдём в папку D:\Documents, но не всегда будет так)

Затем переходим в папку с нашим сериалом

И задаём команду для iconv

Всё, если в исходном файле(который, напоминаю, в многобайтной кодировке UTF-8) не встречаются символы отсутствующие в кодировке Windows(однобайтная кодировка), то мы заимеем необходимое.
В противном случае, мы получим частично перекодированный файл, перекодирование которого остановится при первом вхождении отсутствующего символа.
Для того что-бы этого не произошло, команду для iconv необходимо составить в таком виде:

Что, как понятно из названия введенных опций, приведёт к транслитерированию неизвестных символов, либо их пропуску.

Обработка сразу всех файлов .srt в каталоге.

Предположим, что нам желательно перекодировать все имеющиеся в папке субтитры.

Для чего в неё помещаем файл с расширением .bat с таким содержимым

Читайте также:  Актуальная версия ядра линукс

И выполняем его.

Для более продвинутого использования «LibIconv for Windows» читаем прилагаемый к ней мануал и учимся пользоваться командными файлами.
Так же, программа легко может использоваться другими приложениями нуждающимися в перекодировании текста.

iconv спотыкается

Читаю книги командой вида:

iconv -f koi-8 -t utf-8 -c

При этом пропадают некоторые буквы и куски слов: пропадают «ё», «интеллигент» превращается в «нт» и т.п. Без -c вылетает с ошибкой о недопустимом символе на первом же «ё». Что делать, куда копать? Локаль — ru_RU.UTF-8, дистрибутив — Fedora Core 6.

Re: iconv спотыкается

Извиняюсь. На и не обращайте внимания.

Re: iconv спотыкается

man iconv -у него есть список не работающих комбинаций кодировок

В частности из koi8 в utf-8

Re: iconv спотыкается

Оппа. А почему так?

Re: iconv спотыкается

потому что когда придумывается новая кодировка ,авторов меньше всего волнует возможность свободной конвертации в. и из.

Re: iconv спотыкается

> потому что когда придумывается новая кодировка ,авторов меньше всего волнует возможность свободной конвертации в. и из.

В стандарте на КОИ-8 ё есть. В UCS-2 ё есть. В UTF-8 ё есть. В чём может быть проблема? Или он использует какую-то свою хитрую внутреннюю кодировку? А с сочетаниями букв тем более непонятно.

Понимаю, что вопрос не по адресу, поэтому буду тем более рад ответу.

Re: iconv спотыкается

> man iconv -у него есть список не работающих комбинаций кодировок

В самом man iconv о неработающих КОМБИНАЦИЯХ ни слова. Я правильно понял, что имелось в виду что-то вроде man 3 iconv_open ?

Re: iconv спотыкается

у меня под фрей -прямо в man iconv

Re: iconv спотыкается

У меня в мане написано, что он от BSD, но про комбинации — ни слова. Датирован, правда, 2001 годом. Ладно, буду копать дальше.

Re: iconv спотыкается

Re: iconv спотыкается

Попробуй использовать piconv (iconv, переписаный на перле) — с ним таких проблем вроде нет.

С иконвом подобное тоже встречал, так до конца и не разобрался.

Можешь ещё enca (enconv) попробовать — она ещё и кодировку входного файла сама определяет.

Re: iconv спотыкается

А не проще ли iconv -f koi-8 -t cp1251 | iconv -f 1251 и ничего искать не надо?

Re: iconv спотыкается

>iconv -f koi-8 -t utf-8 -c

А это точно что koi-8, может koi8-r ?

Re: iconv спотыкается

само собой это был koi8-r (очепятка)

Re: iconv спотыкается

>А это точно что koi-8, может koi8-r ?

Принимает и то и другое. Результат тоже один.

Re: iconv спотыкается

> А не проще ли iconv -f koi-8 -t cp1251 | iconv -f 1251 и ничего искать не надо?

А сработает? Ошибка — на недопустимый для КОИ-8 символ.

Re: iconv спотыкается

Стало интересно. Скачал libiconv с gnu.org — оно здорово отличается от того, что в Федоре. Кто-нибудь может подсказать, в каком RPM находится iconv ? Заранее спасибо.

Re: iconv спотыкается

>Кто-нибудь может подсказать, в каком RPM находится iconv ? Заранее >спасибо.

Оцените статью