Toplam kodlama karışıklık! :-)
The table character set
MySQL tablo karakter seti tek kodlama MySQL dahili kullanmanız gerektiğini belirler ve böylece karakter aralığı izin.
- Latin-1 olarak ayarlarsanız (aka ISO 8859-1), masanızda uluslararası karakterleri depolamak mümkün olmayacaktır.
- Önemlisi, karakter seti PHP ile iletişim kurarken MySQL kullandığı kodlamayı etkilemez.
- Tablo collation sıralama için kuralları belirler.
The connection character set
MySQL connection character set Eğer tablo veri almak kodlama belirler (ve MySQL veri göndermek gerekir).
- Kodlama SET İSİMLERİ, örneğin ile ayarlanır
SET NAMES "utf8"
.
- Bu tablo, kodlamayı uymuyorsa, MySQL otomatik olarak anında veri dönüştürür.
- Bu sayfa karakter setini uymuyorsa, sen örneğin kullanılarak elle PHP karakter kümesi dönüşümü gerçekleştirmek zorundayız utf8_encode veya mb_convert_encoding.
Page character set
Content-Type header ile belirtilen sayfası karakter seti, PHP komut dosyası çıkışını yorumlamak nasıl tarayıcı söyler.
- Eğer tarayıcınızın içinde dosyayı kaydederken bir HTTP başlığı olarak, kaydedilmez. Bilgi, böylece OpenOffice veya diğer programlar için kullanılabilir değildir.
Recommendations
İdeal olarak, her üç yerde aynı şifrelemeyi kullanmalıdır ve ideal, kodlama UTF-8 olmalıdır.
Dosya biçimi kodlayan bilgi içermez Ancak, CSV, sorunlara neden olur. Bu kodlama tahmin etmek kadar uygulama ve böylece, gördüğünüz gibi, tahmin yanlış olur.
- Ben OpenOffice hakkında bilmiyorum, ama Microsoft Office, Windows genellikle Latin-1 anlamına gelir "ANSI" kodlama, (veya CP1252 belirli olması) üstlenecek.
- ";" Office sonra kullanarak geçer beri Microsoft Office ayrıca, countries that use "," as a decimal separator sorunlara neden olur CSV dosyaları için bir alan ayırıcı olarak.
En iyi bahis CSV dosyası için Latince-1 kullanmaktır. Ben hala tablo için UTF-8 kullanmak istiyorum ve bağlantı karakter HTML sayfaları için de UTF-8 olsa ayarlar, ve.
Eğer (SET NAMES "utf8"
bağladıktan sonra yürüterek) belirlenen bağlantı karakter için UTF-8 kullanıyorsanız, Latin-1 dönüştürmek için utf8_decode yoluyla metni çalıştırmak gerekir.
That entity problem
Ben de salesforce bu gönderme geçirerek ve bir hata alıyorum: "varlık" Atilde "ilan başvurulan, ama değildi."
Bu bir XML bağlamda HTML kodunu geçiyoruz gibi geliyor, ve karakter setleri ilgisi yoktur. Yoluyla metni çalıştırmayı deneyin html_entity_decode.