Base64_decode ile kod çözme XML PHPUnit çalışıyor ancak tarayıcıda UTF-16 kodlanmış verileri döndürür

0 Cevap php

PHP'nin base64_decode fonksiyonu ile bir çerez ile bulunan bir XML pasajı, çözme ile bazı garip sorunlar yaşıyorum:

  1. Bizim PHPUnit testlerde, XML çözmek ve konsola echo ve (tüm birim testleri de geçmesi) beklediğiniz gibi XML yazdırır.
  2. En kısa sürede biz tarayıcıda aynı kodu çalıştırmayı deneyin gibi, kodu çözülen XML beklenen XML etiketleri fragmanları ile serpiştirilmiş UTF-16 karakter yükler içeriyor gibi görünüyor. Örneğin:

Eğer beklediğiniz gibi SimpleXMLElement constructor bu dize geçerken, biz bir Exception: String could not be parsed as XML... hata ile sonuna kadar.

Bazıları daha çok bilgi:

  • XML kendisi harici bir giriş sistemi geliyor ve biz o biçimdir üzerinde herhangi bir kontrol yok; herhangi bir ile gelmiyor beyan ve kök düğümü bu ... olduğunu tag.
  • Ben sunulmakta sayfanın karakter kodlamasını kontrol ettik ve bu UTF-8 olduğunu doğruladıktan.
  • Geliştirilen sitesi Drupal kullanıyor
  • Biz Drupal drupal_convert_to_utf8 fonksiyonu sayesinde XML / UTF-16 dize geçirmeden çalıştı, ama bu sadece sembolleri örneğin Çince (bence) döndürür敲

Herkes önce böyle bir şey rastlamak ya da bu neden olabilir bir fikriniz var mı?

0 Cevap