[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автоматическая смена кодировки.
linf
К примеру, есть текст в file.txt имеющий произвольную Кириллическую кодировку, я его загоняю в строку $line, и хочу что бы он читался на моей страничке в UTF-8...

Такой способ:
PHP
$line iconv('windows-1251','utf-8',$line);

Работает, НО ! не устраивает, так как в ручную постоянно перебирать кодировки не хочется. Можно ли какнибуть определить в какой кодировки текст автоматически и преобразовать в UTF-8 ?



Спустя 42 минуты, 25 секунд (29.07.2009 - 12:01) olgatcpip написал(а):
на сколько я знаю на 100% нельзя.

я тут обсуждала ето

http://phpforum.ru/index.php?showtopic=17982&hl=

Спустя 1 час, 7 минут, 19 секунд (29.07.2009 - 13:08) twin написал(а):
Кодировку по тексту определить на 100% невозможно. Есть способ отличить utf-8 это или нет. Если файлы свои, то можно попробовать. Если чужие, то лучше ориентироваться на заголовки.

Спустя 32 минуты, 28 секунд (29.07.2009 - 13:41) linf написал(а):
twin в смысле на заголовки? вообще я делаю файл индекса локальных сайтов, но оказалось что они в разной кодировке... как быть?

Спустя 9 часов, 54 минуты, 18 секунд (29.07.2009 - 23:35) linf написал(а):
Решение нашел, поняв, что до индекссации HTML в текстовики, из нее можно вытащить кодировку:

PHP
foreach ($link as $val) {
            if (
eregi('charset=(.*)"'$val$code)) { $out_code $code[1]; $is_code true;}
            if (
$is_code) break;
            }

$out_code iconv($out_code,'utf-8',$out_code);
echo 
$out_code " <BR><BR>";    //Такая у нас кодировка!



Вопрос, будет ли оправдана замена eregi на preg_match_all , или я чего то не понимаю?
Заранее благодарю.

Спустя 3 часа, 36 минут (30.07.2009 - 03:11) twin написал(а):
Есть чудесная функция get_headers(). И не нужны никакие там регулярки.

Спустя 19 минут, 43 секунды (30.07.2009 - 03:31) linf написал(а):
twin можно пример?

и поможет ли она если charset находится в мета теге?

Спустя 5 часов, 30 минут, 47 секунд (30.07.2009 - 09:02) olgatcpip написал(а):
twin, я не вижу что бы get_headers() возвращала кодировку
Скрытый текст

PHP
$url 'http://www.example.com';

print_r(get_headers($url));

print_r(get_headers($url1));

Результатом выполнения данного примера будет что-то подобное:
PHP
Array
(
    [
0] => HTTP/1.1 200 OK
    
[1] => DateSat29 May 2004 12:28:13 GMT
    
[2] => ServerApache/1.3.27 (Unix)  (Red-Hat/Linux)
    [
3] => Last-ModifiedWed08 Jan 2003 23:11:55 GMT
    
[4] => ETag\\"3f80f-1b6-3e1cb03b\\"
    
[5] => Accept-Rangesbytes
    
[6] => Content-Length438
    
[7] => Connectionclose
    
[8] => Content-Typetext/html
)

Array
(
    [
0] => HTTP/1.1 200 OK
    
[Date] => Sat29 May 2004 12:28:14 GMT
    
[Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [
Last-Modified] => Wed08 Jan 2003 23:11:55 GMT
    
[ETag] => \\"3f80f-1b6-3e1cb03b\\"
    
[Accept-Ranges] => bytes
    
[Content-Length] => 438
    
[Connection] => close
    
[Content-Type] => text/html
)
В какой переменой кодировка?

Спустя 9 часов, 53 минуты, 4 секунды (30.07.2009 - 18:55) twin написал(а):
Наверное не все cервера настроены так, что бы слать кодировку в заголовках... но и не все используют метатеги. Кстати, второе хуже чем первое. Ну а убедиться можно тут.


_____________
Live in new format =)
Быстрый ответ:

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