CURL ithalat karakter kodlama sorunu

5 Cevap php

Ben bazı kod almak için CURL kullanıyorum. Ancak, fransızca, tüm karakterler komik çıkıyor. Örneğin Bonjoura ...

Ben ithal kod herhangi bir şey değiştirmek için erişim yok. Bunu düzeltmek için benim tarafımı yapabileceğim bir şey var mı?

Teşekkürler

5 Cevap

Jon Skeet sadece nihai metne erişiminiz varsa bu ancak, durumu anlamak zor işaret gibi, metin kodlamasını değiştirmek için iconv kullanmayı deneyebilirsiniz.

Yani

$text = iconv("Windows-1252","UTF-8",$text);

Ben (İtalyanca dil ve özel karakter) benzer bir sorun zaman önce yaşadım ve ben bu şekilde çözdüm.

Farklı kombinasyonunu deneyin (UTF-8, ISO-8859-1, Windows-1252).

Ben benzer bir sorun vardı. Ben giriş ve çıkış karakter setlerinin tüm kombinasyonları döngü çalıştı. Hiçbir şey yardımcı oldu! (

Ancak ben aslında verileri getirilen kod erişim başardı ve suçlu yalan yerdir. Veri cURL yoluyla getirilen edildi. Ekleme

 curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);

düzelttim.

Karakter setlerinin bir liste tüm olası kombinasyonlarını denemek için kod kullanışlı bir set:

$charsets = array(  
        "UTF-8", 
        "ASCII", 
        "Windows-1252", 
        "ISO-8859-15", 
        "ISO-8859-1", 
        "ISO-8859-6", 
        "CP1256"
        ); 

foreach ($charsets as $ch1) { 
    foreach ($charsets as $ch2){ 
        echo "<h1>Combination $ch1 to $ch2 produces: </h1>".iconv($ch1, $ch2, $text_2_convert); 
    } 
} 

PHP varsayılan olarak UTF-8 kullanmak gibi görünüyor, bu yüzden aşağıdaki eserlerini bulundu

$ Text = iconv ("UTF-8", "Windows-1252", $ metin);

Şu anda benzer bir sorun acı çekiyorum, ben basit bir html <title> ithalatçı cia cURL yazmaya çalışıyorum. Yani şimdiye kadar ne yaptık bir fikir vermek için gidiyorum:

  1. CURL aracılığıyla HTML Al
  2. Cevap başlıklarında kodlama herhangi bir ipucu curl_getinfo() aracılığıyla varsa kontrol edin ve regex yoluyla bu maç
  3. content-type meta ve <title> etiketi (evet, i know the consequences) bakarak amacıyla HTML Ayrıştırma
  4. Içerik-tipi, başlık ve meta hem karşılaştırmak ve biz hiç kimse onların httpd yapılandırmasının umurunda bilmek ve bunu kullanarak kir çözümlerden bir yeri vardır, çünkü farklı ise meta birini seçin
  5. iconv() dizesi
  6. Whish gün birisi standartları bana meta ayrıştırma tasarruf çünkü $DEITY, gün sonuna kadar ona / onu cezalandırır takip etmez zaman

Sen yerini alabilir edin

$data = curl_exec($ch);

tarafından

$data = utf8_decode(curl_exec($ch));

Ben bu aynı sorunu vardı ve bu benim için iyi çalıştı.