ISO-8859-1 PHP UTF-8 Karakter dönüşüm

3 Cevap php

Ben kullanılan karakter kodlaması ISO-8859-1 ve biz kullanarak yeni bir site UTF-8 kullanarak bir veritabanından veri almak için yaşıyorum. Veri çekilir ediliyor site hala sanırım ISO dolayısıyla nedeni, eski.

Ben hiçbir sonuç ile aşağıdaki çözümleri denedim:

iconv

Nevertheless, after it published a proposed rule in March 2008 that would have banned such items alkarşıgether, the Postal Service received numerous comments opposing its planned action for four main reasons: (1) the original language was vague and overly broad, so the Postal Service has changed the word “munitions†karşı “explosive devices,†(2) some respondents questioned whether such a problem even existed, though the Postal Service says it has “recorded numerous incidents involving the discovery of mail that exhibited characteristics of possible explosives,†(3) the proposed rule supposedly violated the Second Amendment, and (4) the Postal Service lacks the authority karşı ban the mailing of such items.

karşı

Nevertheless, after it published a proposed rule in March 2008 that would have banned such items alkarşıgether, the Postal Service received numerous comments opposing its planned action for four main reasons: (1) the original language was vague and overly broad, so the Postal Service has changed the word “munitions†karşı “explosive devices,†(2) some respondents questioned whether such a problem even existed, though the Postal Service says it has “recorded numerous incidents involving the discovery of mail that exhibited characteristics of possible explosives,†(3) the proposed rule supposedly violated the Second Amendment, and (4) the Postal Service lacks the authority karşı ban the mailing of such items.

mb_convert_encoding

Yukarıdaki gibi aynı kesin sonuç.

utf8_encode

Yukarıdaki gibi aynı kesin sonuç.

utf8_decode

Geri hepsi ile ilginç bir sonuç çıkarır? değiştirmeleri:

Nevertheless, after it published a proposed rule in March 2008 that would have banned such items alkarşıgether, the Postal Service received numerous comments opposing its planned action for four main reasons: (1) the original language was vague and overly broad, so the Postal Service has changed the word ?munitions? karşı ?explosive devices,? (2) some respondents questioned whether such a problem even existed, though the Postal Service says it has ?recorded numerous incidents involving the discovery of mail that exhibited characteristics of possible explosives,? (3) the proposed rule supposedly violated the Second Amendment, and (4) the Postal Service lacks the authority karşı ban the mailing of such items.


Not exactly sure what karşı do here.

Herhangi bir yardım mutluluk duyacağız!

Teşekkürler!

3 Cevap

Bu çok kapsamlı olmak zorunda gidiyoruz. Veritabanı ve web tarayıcısı arasında, kodlama kadar faul olabilir many yerler vardır.

  • Veritabanı sunucusunun charset ve harmanlama charset
  • Veritabanının charset ve harmanlama charset
  • Veritabanının bağlantısı ve harmanlama charset
  • Her veritabanı tablonun charset ve harmanlama charset
  • (Örneğin Htmlentities gibi) Çeşitli PHP fonksiyonlarda
  • HTTP Content-Type

Bunlardan herhangi biri potansiyel suçlu olabilir. Başarıyla UTF-8, ISO-08859-1 verilerinizi dönüştürülmüş olabilir ama hala bunu manipüle veya doğru görüntüleme anlamına gelmez.

(Tablo-özel ayarları hariç) veritabanı eşyalarını kontrol etmek için, bu sorguyu çalıştırın

select @@character_set_server
     , @@collation_server
     , @@character_set_database
     , @@collation_database
     , @@character_set_client
     , @@character_set_connection
     , @@collation_connection
     , @@character_set_results
;

Kontrol edin masanız bu bilgi için ifadeleri (Eğer yardıma ihtiyacınız varsa kopyalayabilirsiniz / Sorunuzun içine bu yapıştırmak) CREATE

HTTP Content-Type (yani çıktı karakter kodlama) gidermek için, emin çıkıştan önce yere PHP bu var olun

ini_set( 'default_charset', 'UTF-8' );

Son olarak, bu yardım etmezse, bize biraz daha ayrıntı vermek. Ne parametreler iconv ile kullanıyorsunuz?

O Windows kod sayfası 1252 var, ISO 8859-1 değil:

>>> a=u'“'
>>> print a.encode('cp1252').decode('utf-8')
“
>>>

Bana verdi sorgudan çıktı bu oldu:

latin1 latin1_swedish_ci latin1 latin1_swedish_ci latin1 latin1 latin1_swedish_ci
latin1

PHP dosyanın başında belirlenen varsayılan charset gelince, hepsi bazı veriler için çalışır, ancak.

Her neyse, burada hala içine bakarak.