|
|
|
| как определить кодировку?
нужно определить кодировку "iso-8859-1" или "Windows-1252" | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 17:50)
| | Кодировки чего? | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 18:01)
| | текста.
в переменной $text имеется текст, вот его нужно определить | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 18:05)
| | переменная php, содержащая текст, не несет информацию о том, в какой кодировке он записан.
Это может быть известно лишь источнику.
Человек (в некоторых частных случаях и скрипт ) по содержанию текста может строить догадки .
Детерминированно определить кодировку по тексту в общем случае невозможно. | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 18:05)
| | Ну если это весь текст русский, и только текст:
<?
$s = "цукуолвыаы";
echo preg_match("/[а-яА-Я]/", $s[0]) ? "This win-1251" : "This fignjaaaa";
|
| |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 18:10)
| | получается если там будет другой набор символов типа не русские а какие нибудь с закорючками, то значит он не win ? | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 18:12)
| | Вам Trianon уже сообщил о прискорбном факте, мне добавить нечего. Поищите в сети, может кто-то ломал голову и "родил" нечто.... | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 18:12)
| | Вот это может сработать, но только в том случае, если есть хоть одна буква кирилицы.
<?php
function get_charset_text($string)
{
$sample = iconv('utf-8', 'utf-8', $string);
if($sample == $string)
return 'This utf-8';
else
return 'This fignjaaaa';
}
|
| |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 18:45)
| | А если там строка на греческом? На иврите? На японском?
Какая принципиаьная разница? | |
|
|
|
|
|
|
|
для: Trianon
(08.07.2009 в 19:12)
| | Чесно говоря мне не приходилось писать сайты на японском, и уж тем более на иврите. Несвезло. Может и нет разницы... По моему разумению, если кодировка символа отличается от utf-8, то должно сработать. Понятия не имею как под win-1251 сделать, но по крайней мере в utf кирилицу различает.
Надо иврит попробовать) | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 20:17)
| | Зачем спорить, не зная какой аист приносит дитя автору.) Если он пытается определить кодировку текста полученного со сторонней страницы, то get_headers(url, 1) ему в помощь. | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 20:19)
| | Не факт. Кодировка файла может и отличаться от той, которая в заголовке. Смотря какие цели преследуются однако. | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 20:43)
| | Это как может отличаться кодировка страницы от кодровки ее контента? | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 20:46)
| | Легко. Вот это в какой кодировке файл?
Файл | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 21:09)
| | Ну блин, развезло вас на экзотику. Ну да, а если еще и листинг кода какого либо там, и еще чего-то.... Речь шла о контенте, причем началось все в разделе Разное, почитайте.... А то что вы приписали, так этого кусок с форума, а форум на 1251, а то, что не войдет в ее рамки, так будет HTML представлением. | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 21:17)
| | Оттуда это как раз не следовало.
Первоначально автор привел изображение строки символов latin-1, и результат своей (естественно неудачной) попытки эту строку просунуть в этот форум (который, понятное дело, от браузера смог эту строку получить лишь html-закодированной)
Откуда он взял эту строку, контентом чего она являлась - тут можно только гадать. | |
|
|
|
|
|
|
|
для: Trianon
(08.07.2009 в 21:25)
| | Я тоже не знаю, а лишь предполагаю, что возможно он получает контент со страниц сторонних. В противном случае может быть только одно - автор пишет сам текст в переменные, и тут же забывает в какой кодировке работает, а потому ему и нужно определение :)
Если же со страницы, то, что привел Николай ни как не может иметь кодировку отличную от 1251, в которой вся страница "рождена". | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 21:17)
| | Да не важно что там в файле, я первый попавшийся сунул. Важно что в ответе сервера. А там utf-8, хотя файл в win. | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 21:32)
| | Ответ сервера вот по этой странице - http://softtime.ru/forum/read.php?id_forum=1&id_theme=66403, будет следующим:
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Wed, 08 Jul 2009 17:34:00 GMT
[Content-Type] => text/html; charset=windows-1251
[Connection] => close
[Server] => Apache
[Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[Expires] => Thu, 19 Nov 1981 08:52:00 GMT
[Set-Cookie] => PHPSESSID=7de6faa548c3ecc6e0089c11aced0999; path=/
[Pragma] => no-cache
)
|
Где тут UTF-8? | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 21:35)
| | Как так? Вот что я вижу:
Array
(
[0] => HTTP/1.1 200 OK
[Server] => nginx/0.5.36
[Date] => Wed, 08 Jul 2009 17:42:26 GMT
[Content-Type] => text/plain; charset=UTF-8
[Content-Length] => 6
[Last-Modified] => Wed, 08 Jul 2009 17:14:14 GMT
[Connection] => close
[Accept-Ranges] => bytes
)
|
согласно Вашей функции. И это логично, потому что так настроен сервер... | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 21:43)
| | И что это за страница? | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 21:50)
| | Это файл, который по ссылке. Как узнать что он win-1251? | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 22:07)
| |
<?
$upl1 = "http://softtime.ru/forum/read.php?id_forum=1&id_theme=66403";
$url2 = "http://ru2.php.net/manual/ru/function.iconv.php";
echo "<pre>";
print_r(get_headers($upl1, 1));
print_r(get_headers($url2, 1));
echo "</pre>";
?>
|
Ответ:
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Wed, 08 Jul 2009 18:10:23 GMT
[Content-Type] => text/html; charset=windows-1251
[Connection] => close
[Server] => Apache
[Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[Expires] => Thu, 19 Nov 1981 08:52:00 GMT
[Set-Cookie] => PHPSESSID=572a21397c5c51e7a15b715a876e3c02; path=/
[Pragma] => no-cache
)
Array
(
[0] => HTTP/1.1 200 OK
[Server] => nginx/0.8.4
[Date] => Wed, 08 Jul 2009 18:10:25 GMT
[Content-Type] => text/html;charset=utf-8
[Connection] => close
[X-Powered-By] => PHP/5.2.10
[Content-language] => ru
[Set-Cookie] => Array
(
[0] => LAST_LANG=ru; expires=Thu, 08-Jul-2010 18:10:25 GMT; path=/; domain=.php.net
[1] => COUNTRY=RUS; expires=Wed, 15-Jul-2009 18:10:25 GMT; path=/; domain=.php.net
)
[Last-Modified] => Wed, 08 Jul 2009 01:40:49 GMT
[Vary] => Cookie
[X-PHP-QUESTION] => I wonder if anyone will ever notice this
[Link] => ; rel=shorturl
)
|
При чем тут?:
[Content-Length] => 6
[Accept-Ranges] => bytes
|
| |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 22:11)
| | >При чем тут?:
Потому что я убрал всё из файла. Сейчас там написано
Вот если так:
<?php
function get_charset_text($string)
{
$sample = iconv('utf-8', 'utf-8', $string);
if($sample == $string)
return 'This utf-8';
else
return 'This fignjaaaa';
}
$url = 'http://irbis-team.com/1.txt';
$header = get_headers($url,1);
echo $header['Content-Type'] , '<br>';
$string = file_get_contents($url);
echo get_charset_text($string);
?>
|
То получается так:
text/plain; charset=UTF-8
This fignjaaaa
|
То есть там на самом деле фигня, а заголовок показывает utf-8 | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 22:27)
| | Ну я же говрю, что вас на экзотику развезло, это уж вы с ней сами разбирайтесь. | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 22:33)
| | Это не меня... Это автора. Каков вопрос - таков ответ))) | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 22:37)
| | А я о чем речь вел? О нормальной html-странице, а не о текстовом файле по индивидуальной ссылке. Узнать его кодировку, это уже другой вопрос. Конечно я могу и картинку в текстовом виде пришпандорить так - кому делать нефиг пусть разбирается в ее кодировке. Но если вы будете включать текстовый файл в html-страницу, то уж наверняка в той же кодировке что и весь основной контент страницы этой. | |
|
|
|
|
|
|
|
для: Николай2357
(08.07.2009 в 21:43)
| | text/plain? | |
|
|
|
|
|
|
|
для: sim5
(08.07.2009 в 18:10)
| | чего ради?
Даже если текст скрипта в этой кодировке. Что само по себе не факт. | |
|
|
|
|
|
|
|
для: Trianon
(08.07.2009 в 18:12)
| | мда, значть проблема.. (( | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 18:23)
| | Кто "рожает" вашу переменную? | |
|
|
|
|
|
|
|
для: Ильдар
(08.07.2009 в 18:23)
| | Из формы на вход скрипту браузер обычно посылает текст в той же кодировке, в какой был charset Content-Type документа с формой. | |
|
|
|