подскажите по iconv

12 3
J
На сайте с 08.06.2006
Offline
844
1479

Сам скрипт php в кодировке utf-8 (не знаю влияет ли это)

Текст в windows-1251 iconv переводит в utf-8 как ����� �����

В чем проблема?

Спасибо!

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#1

Наверное вы хотели сказать вывод в браузер?

Может быть для браузера выводится кодировка win1251

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
J
На сайте с 08.06.2006
Offline
844
#2

так и есть

в БД пишет нормально

повылазили Notice: iconv(): Detected an illegal character in input string

начал копать

---------- Добавлено 17.11.2017 в 12:08 ----------

эти ошибки возникают на таком тексте "л.с.", "км.","руб."

и еще Detected an incomplete multibyte character in input string возникает

в коде у меня

iconv(mb_detect_encoding($a->plaintext, "utf-8,windows-1251"), "UTF-8//IGNORE",$a->plaintext);

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#3

А если просто:

$a->plaintext=iconv("cp1251", "UTF-8//TRANSLIT//IGNORE",$a->plaintext);

J
На сайте с 08.06.2006
Offline
844
#4

тогда выводит корректно

но есть проблемы

если делать $a->plaintext = iconv(mb_detect_encoding($a->plaintext, "utf-8,windows-1251"), "UTF-8//IGNORE",$a->plaintext);

то проблема с текстом в windows-1251 - его в БД не записывает

если

if (mb_detect_encoding($a->plaintext)!='utf-8')

$a->plaintext = iconv("windows-1251","UTF-8//IGNORE",$a->plaintext);

if (mb_detect_encoding($a->plaintext)=='utf-8')

$a->plaintext = iconv(mb_detect_encoding($a->plaintext, "utf-8,windows-1251"), "UTF-8//IGNORE",$a->plaintext);

то текст в utf-8 в БД пишется в крякозябрах

M
На сайте с 12.11.2005
Offline
122
#5

joost, нужно прийти к единой кодировке:

- отображение сайта (можно посмотреть в браузере);

- содержимое скрипта (если в нем самом нет текстов, то не принципиально);

- таблица базы данных и работа с БД.

Где-то есть расхождения. Я бы mb_detect_encoding вообще не использовал.

J
На сайте с 08.06.2006
Offline
844
#6

задача по сути такая

у меня все в utf-8

данные могут поступать в самых разных кодировках

их нужно перекодировать в utf-8

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#7

Определять кодировку по кусочку текста это неблагодарное дело. Лучше узнавать кодировку по всему тексту изначальному и смотреть, что там за кодировка.

S
На сайте с 30.09.2016
Offline
469
#8
joost:
данные могут поступать в самых разных кодировках

Вот и проверили бы - судя по вашим сообщениям, там не только utf8 и cp1251, но и другие кодировки, которые не определяются при задании списка из двух кодировок.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
M
На сайте с 12.11.2005
Offline
122
#9

joost, в таком случае только если кодировка не utf-8, то надо определять кодировку именно этого текста и конвертировать именно из его кодировки в utf-8.

J
На сайте с 08.06.2006
Offline
844
#10
LEOnidUKG:
Определять кодировку по кусочку текста это неблагодарное дело

так там разных кусков текста разная кодировка

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий