[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Iconv из KOI8-R в UTF8
multik
Здравствуйте,

iconv('koi8-r','utf8',"«Hallo»") выдает ╚Hallo╩.

Как бороться?



Спустя 48 минут, 45 секунд (14.07.2010 - 09:29) Basili4 написал(а):
попробуй заменить их на « и »

Спустя 8 минут, 41 секунда (14.07.2010 - 09:38) multik написал(а):
Т.е. предлагаете после перекодирования заменять эти символы на то, что нужно?

Спустя 1 минута, 9 секунд (14.07.2010 - 09:39) Basili4 написал(а):
нет я вообще предлагаю использовать эти символы браузер их покажет как нужно в любой кодировке

Спустя 11 минут, 35 секунд (14.07.2010 - 09:51) multik написал(а):
Дело в том, что символы приходят ко мне из базы MySQL. Там кодировка KOI8-R. У меня проект в UTF8.

Спустя 2 минуты, 12 секунд (14.07.2010 - 09:53) Basili4 написал(а):
я думаю тогда только заменой.

Спустя 1 минута, 48 секунд (14.07.2010 - 09:55) multik написал(а):
Ясно, значит нельзя с этим бороться по другому?

Спустя 19 минут, 41 секунда (14.07.2010 - 10:14) ssa написал(а):
Если перекодировка используется только для базы данных, можно перекодировать БД в utf8 или после подключения к базе сделать 2 запроса:

set character_set_results='utf8'
SET NAMES utf8

Спустя 1 минута, 58 секунд (14.07.2010 - 10:16) Basili4 написал(а):
тогда символы в koi8-r в базе будут зякозябрами

Спустя 15 минут, 52 секунды (14.07.2010 - 10:32) multik написал(а):
Цитата (ssa @ 14.07.2010 - 07:14)
Если перекодировка используется только для базы данных, можно перекодировать БД в utf8 или после подключения к базе сделать 2 запроса:

set character_set_results='utf8'
SET NAMES utf8

База старая, не знает что это такое, помогает только
SET CHARACTER SET XXX_XXX;

Но на
SET CHARACTER SET utf8_koi8;

ругается, тогда как
SET CHARACTER SET cp1251_koi8;

работает

Спустя 1 день, 2 часа, 57 минут, 48 секунд (15.07.2010 - 13:30) multik написал(а):
Нашел в чем подвох!
Символы « и » не входят в кодировку koi8-r. Системы, которые работали с этой базой, были написаны в кодировке cp1251. В cp1251 эти символы есть и имеют коды AB и BB соответсвенно. В koi8-r этим кодам соответсвуют символы ╚ и ╩ соответственно.

Т.е. в базе в кодировке koi8-r хранились не кавычки, а действительно кракозябры. А когда клиентские приложения получали эти данные, то преобразование iconv('koi8-r','windows-1251',"╚Hallo╩") давало правильный результат.

А вот в кодировке UTF-8 символы ╚ и ╩ и так есть, что приводит при перекодировании к таким же кракозябрам.

Т.о. iconv работает правильно, просто кавычки изначально были сохранены как кракозябры и остается только вручную делать обработку таких символов.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.