2016-04-05 14 views
1

Bir web sayfasından bazı içeriği ayrıştıran bir kod bölümüm var ve neden derece sembolünün önüne  eklediğini anlayamıyorum.Derece (°) sembolünü kullandığımda DomDocument neden bu karakteri (Â) ekliyor?

$ php -a 
php > $dom=new domDocument; 
php > $dom->loadHTML("<ol><li>What if I use a ° symbol here...</li></ol>"); 
php > $xpath = new DOMXpath($dom);                                      
php > $steps = $xpath->query("//li"); 
php > foreach($steps as $step) { echo $step->nodeValue; } 
What if I use a ° symbol here... 
+0

ile bu sorunun nasıl çözüleceği bilmiyorum, ama bu konu tam olarak ne olduğunu. Par PHP ayrıştırıcısının karakter kodlaması işleminde hatadan türeyen bir karakterdir. PHP, karakter kümelerinin dış ve iç kodlamasıyla birlikte korkak şeyler yapar. Ve as ascii/unciode dönüşümleri sırasında boşluklar arasında ne ortaya çıkar? – AlanSTACK

+1

Ayrıca bakınız: [Her programlayıcının, metin ile çalışacak kodlamalar ve karakter kümeleri hakkında kesinlikle bilmesi gerekenler] (http://kunststube.net/encoding/) – mario

cevap

1

Sorun giriş UTF-8 iken DOMDocument::loadHTML varsayılan kodlama ISO-8859-1, olmasıdır kodlanmış dize. DOMDocument'e farklı bir karakter takımı kullandığınızı bildirmeniz gerekir.

Sen yapabileceği

$dom->loadHTML("<?xml encoding=\"utf-8\" ?><ol><li>What if I use a ° symbol here...</li></ol>"); 
+0

php kodlama sorunları için kötüdür. kaynak kod kodlaması, iç kodlama, girdi/çıktı kodlaması, vb. ile ilgili bir bölüm eklemek isteyebilirsiniz. Bunlardan herhangi biri olabilir ... – AlanSTACK

0

Belki bir kodlama sorunu:

ben php yorumlayıcısı benim uygulamada görüyorum ne çoğaltılmış ettik

? Normalde DomDocument, UTF-8 kullanır.

Ancak, tarayıcılar sayfayı görüntülerken farklı kodlamaları kullanma eğilimindedir. Kafanın elemana

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" > gibi bir etiketi ekleyebilirsiniz kodlayan UTF-8 zorlamak için

İlgili konular