Bu bir charset konudur. Gibi, birçok farklı düzeylerde yanlış gitmiş olabilir, ancak büyük olasılıkla, sizin veritabanında dizeleri utf-8 kodlanmış ve iso-8859-1 olarak sunuyoruz. Ya da tersi.
Bu sorunu gidermek için doğru yolu, karakter setleri düz elde etmektir. Basit strateji, PHP kullanarak konum beri, sizin uygulama boyunca iso-8859-1 kullanmaktır. Bunu yapmak için, emin olmalısınız:
- Tüm PHP kaynak dosyaları iso-8859-1 (cp-1252 ile karıştırılmamalıdır) olarak kaydedilir.
- Web-server
charset=iso-8859-1
dosyalara hizmet için yapılandırılmış
- Alternatif olarak,
header
a> kullanarak, PHP-belgesinin içinde webserverların ayarlarını geçersiz kılabilirsiniz.
- Buna ek olarak, may aynı şeyi belirtir, HTML size bir meta etiketi eklemek, ama bu kesinlikle gerekli değildir.
- Sen may da
<form>
unsurları accept-charset
öznitelik belirtin.
- Veritabanı tabloları latin1 gibi kodlama ile tanımlanır
- PHP ve veritabanı arasında veritabanı bağlantısı latin1 ayarlanır
Zaten veritabanında veri varsa, muhtemelen zaten berbat farkında olmalıdır. Eğer üretim aşamasında zaten değilseniz, sadece tüm silin ve baştan başlayın. Aksi takdirde bazı veri temizleme yapmanız gerekecek.
A note on meta-tags, since everybody misunderstands what they are:
When a web-server serves a file (A HTML-document), it sends some information, that isn't presented directly in the browser. This is known as HTTP-headers. One such header, is the Content-Type
header, which specifies the mimetype of the file (Eg. text/html
) as well as the encoding (aka charset).
While most webservers will send a Content-Type
header with charset
info, it's optional. If it isn't present, the browser will instead interpret any meta-tags with http-equiv="Content-Type"
. It's important to realise that the meta-tag is only interpreted if the webserver doesn't send the header. In practice this means that it's only used if the page is saved to disk and then opened from there.
This page bu şeyler çok iyi bir açıklaması var.