PHP конвертировать строки из Windows-1250 в UTF-8 - PullRequest
0 голосов
/ 25 ноября 2010

Я сканирую сайт Windows-1250 (meta http-equ = "Content-Type" content = "text / html; charset = windows-1250").

Поскольку моя база данных - utf-8, мне нужно преобразовать данные в utf-8.

Для этой работы я пробовал iconv ('windows-1250', 'UTF-8', $ s); вместо «Чарлс» вместо «Чарлс» выдается «Åšarls».

Это дает немного лучшие результаты, когда кодировки меняются местами iconv ('UTF-8', 'windows-1250', $ s); дает «Èarls» вместо «Čarls». Странно.

У вас есть идеи, как я могу преобразовать это в UTF-8?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 26 ноября 2010

Ребята, мне очень жаль.Это была проблема с базой данных.$ Connection-> setCharset ( 'utf8');починил это.Нет iconv, нет mbstring.

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

Спасибо за все комментарии.*

0 голосов
/ 25 ноября 2010

Я бы рекомендовал сначала проверить, достигают ли правильные данные iconv (и аналогично тому, что выходит из iconv).

Используйте оператор типа echo bin2hex($string) и посмотрите на поток байтов для $s до иконы.Если у вас есть строка, вы считаете, что первый байт должен быть c8.Если вы посмотрите на поток байтов после iconv, то первые байты должны быть c48c (в UTF-8);если вы конвертируете в UCS-2, вы увидите 010c, который вы увидите - соответствующий символ в юникоде.

В зависимости от результатов вы узнаете, если вашпроблема заключается в сборе данных (т. е. вы не видели c8), вашей установке iconv (т. е. преобразование дает неправильный результат) или помещении этих данных в вашу базу данных (т. е. результат iconv соответствует ожидаемому).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...