2010-04-25 3 views
0

나는 페이지 http://svejo.net/popular/all/new/을 열고 게시물의 이름을 필터링하는 Perl 스크립트를 가지고 있지만 헤더를 제외한 모든 것이 암호화 된 것 같습니다. 아무것도 읽을 수 없습니다.왜 Perl로 가져온 웹 페이지가 이상하게 보입니까?

브라우저에서 동일한 페이지를 열면 소스 코드를 포함하여 모든 것이 잘 보입니다. 브라우저가 아닌 스크립트 용 페이지를 어떻게 암호화 할 수 있습니까? 내 Perl 스크립트가 내 브라우저 (Google 크롬)와 동일한 헤더를 보냅니다.

+0

여러분이 펄에서 무엇을하고 있는지 알지 못하지만, 나에게 잘 해줍니다. 암호화 된 것을 어떻게 알 수 있습니까? – WhirlWind

+2

사용하고있는 최소한이고 완전한 스크립트와 출력을 보여주십시오. –

+1

'헤더를 제외한 모든 것이 암호화 된 것'이라고 말하면 '텍스트/정보'또는 '텍스트 및 HTML 태그'를 의미합니까? – lexu

답변

2

페이지가 UTF-8로 인코딩됩니다. 아마도 Perl 스크립트가 다른 인코딩을 사용하고 있습니까?

Processing UTF-8 Files with Perl을 설명하는이 페이지를 발견했습니다.

+0

이것이 문제라고 생각하지만, utf8을 사용하는 방법을 perl에 알려주지 못합니다. 나는 그것이 기본적으로 정확히 utf8을 사용한다는 것을 읽었다. –

4

불가리아어를 읽을 수는 없지만 페이지는 나에게 잘 들립니다.

#!perl 

use LWP::Simple; 

getprint('http://svejo.net/popular/all/new/'); 

이 스크립트는 홀수 또는 암호화 보이는 것도 withouth 일반 페이지를 반환 :

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="bg" lang="bg"> 
    <head> 

<title>Svejo — Популярните новини </title> 

당신이하고있는 버전 펄의 시도되었고 모듈이 사용하는거야? 보고있는 출력은 무엇입니까?

당신은 Windows에서 ActivePerl을 사용하고 있음을 명확히합니다 (추가 세부 사항으로 질문을 업데이트하십시오). 프로그램에서 올바른 유니 코드 일을 할 필요가있을뿐만 아니라 유니 코드를 올바르게 표시하도록 터미널을 설정해야한다는 것을 기억하십시오.


출력을 명시 적으로 binmode으로하면 어떻게됩니까?

binmode STDOUT, ':utf8'; 

출력을 파일로 저장하고 UTF-8을 인식하는 편집기에서 확인해보십시오.


그래, 작동하지 않습니다. 훨씬 더 일반화되고 모든 핸들이 기본적으로 UTF-8을 사용하도록 설정해 보겠습니다.

use open IO => ':utf8'; 
+0

@ 브라이언 - 키릴 문자이지만 거의 러시아어입니다. 소스를 보면 언어가 바로 있습니다 : - 불가리아어 (http : /en.wikipedia.org/wiki/Bulgarian_language). Stevko가 말했듯이, UTF-8이거나, 적어도 내 Firefox를 주장합니다 :) – DVK

+0

그건 그렇고, 내 ActiveState Perl (v5.10.1) - 적어도 WindowsXP cmd 터미널 창에서 - 사실상 키릴 문자를 일종의 상위 - 위의 Perl 2-liner를 사용하여 ASCII- 미술 문자 - 횡설수설. 나는 그럴듯한 이유를 모험하기 위해 UTF에 충분히 정통하지 않다. ( – DVK

+0

나는 불가리아어도 읽지 않는다. :) –

관련 문제