php
  • html
  • http
  • character-encoding
  • iso-8859-1
  • 2016-04-05 18 views 0 likes 
    0

    Dosya_get_contents() işlevini kullanarak bir sayfa okumaya çalışıyorum ancak karakter kodlamasını çalışamıyorum.file_get_contents() ISO-8859-1 kodlamasını bozuyor

    $username = "masked"; 
        $password = "maskedPass"; 
        $remote_url = 'https://utfws.utfpr.edu.br/aluno01/sistema/mplistahorario.inicio?p_curscodnr=212'; 
    
        // Create a stream 
        $opts = array(
         'http'=>array(
          'method'=>"GET", 
          'header' => array(
           "Authorization: Basic " . base64_encode("$username:$password"), 
           'Accept-Charset: iso-8859-1' 
          ) 
    
         ) 
        ); 
    
        $context = stream_context_create($opts); 
    
        // Open the file using the HTTP headers set above 
        $file = file_get_contents($remote_url, false, $context); 
    
        echo $file; 
    

    ben utf-8 karakter kodlamasını değiştirmek için çalıştı ama hep soru işaretleri yerine áéíóúãõç içeren bir sayfa olsun:

    bu benim kodudur.

    Sayfayı doğrudan tarayıcımda açtığımda, düzgün çalışıyor. Bu neden oluyor?

    +0

    Carreful, kullanıcı adınızı ve şifrenizi yazdınız; Belki senin için ya da web sitesi için iyi değil? Ve ben kodunuzu (kopyala/geçmiş) deneyin ve kodlama tamam – Xenofexs

    +0

    'başlığı ('Content-Type: text/html; charset = iso-8859-1'); echo $ dosya; '' $ file 'değerini okumak için hangi kodlamayı kullandığını belirtin. – Federkun

    +0

    @Xenofexs Geçici bir yazı yazdım, bir çözüm bulmaz geri döneceğim. Ama teşekkürler :) –

    cevap

    1

    Bana öyle geliyor ki, bu sadece kayıp kodlama ayrıntıları sorunu olabilir.

    Ne Tarif ettiğiniz geçerli: 8859-1

  • sunucu kodlama belirterek, başlıkla birlikte istenen kodlama, doküman ile yanıt web sunucusu

    1. istek dokümanı, belirterek kodlama 8859-1 olduğunu. Bu bir tarayıcıda doğru görünecektir.
    2. çıkış belge (ama başlık verisini değil!) Php den (bu belirtilmemişse nereye gittiğini
    3. izleyicinin çeşit veriyi açın.

  • Bkz kodlama şartname kayboldu nerede, orada 3. adım?

    verileri doğru 8859-1 ile deşifre edilebilir, ancak sadece izleyici varsayılan olarak o kodlamayı kullanmak üzere yapılandırılmış olup olmadığını 8859-1 ile deşifre edilecektir. Bazı uygulamalar 8859- bir varsayılan olabilir 1, ancak UTF-8 bu günlerde çok daha yaygındır.

    Verileri farklı bir depolama motoruna yüklerseniz, mysql deyin, sorun bileşik olabilir. mysql, metin verisini içeren bir karakter kümesini ilişkilendirir. Veritabanınız varsayılan olarak utf-8 ise ve verilerin aslında 8859-1'de olduğunu söylemezseniz, ancak verilerin 8859-1'de olduğunu söyleyemezsiniz, artık varsayılan veriyi alıyorsunuz demektir. utf-8'de olmak ve veriler ileriye dönük olarak veritabanında ele alınacaktır. Şimdi veritabanını gelecekte 8859-1 için soruyor olsanız bile, veriler utf-8'den 8859-1'e yeniden kodlanacak, ancak geçerli utf-8 değil - başka bir yanlış bayt kümesi.

    Bu sorunu çözmek için, verileri görüntülediğinizde veya bir veritabanına kaydettiğinizde kodlamayı belirtin.

    +0

    Mysql db'mi latin1'e değiştirmek zorunda kaldım, işe yaramış gibi görünüyor. İdeal olmasa da işe yaradı. Yani teşekkürler! –

    +1

    Eğer utf8'de _store_ istiyorsanız, _client_ karakterinizi latin1'e ayarlayabilir ve sonra otomatik olarak mysql tarafından onaylanacaktır. –

    İlgili konular