Peki sorun ne?
UTF-8 yerine CP-1252 olarak kodu çözülen bir ’
( RIGHT SINGLE QUOTATION MARK
- U + 2019) karakteridir . Eğer kontrol ederseniz kodlamalar tablo, o zaman bu karakter UTF-8 bayt oluşan olduğunu görmekteyiz , ve . Eğer işaretlerseniz CP-1252 kod sayfa düzenini , o zaman bu bayt her karakter standı olduğunu göreceksiniz , ve .0xE2
0x80
0x99
â
€
™
ve nasıl düzeltebilirim?
Karakterleri okumak, yazmak, saklamak ve görüntülemek için CP-1252 yerine UTF-8 kullanın.
İçerik Türü hem etiketimde hem de <head>
HTTP üstbilgilerimde UTF-8 olarak ayarlanmış :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Bu sadece istemciye karakterleri yorumlamak ve görüntülemek için hangi kodlamanın kullanılacağını bildirir. Bu, kendi programınıza karakterleri okumak, yazmak, saklamak ve görüntülemek için hangi kodlamanın kullanılacağını bildirmez. Tam cevap, kullanılan sunucu tarafı platforma / veritabanına / programlama diline bağlıdır. HTTP yanıt başlığındaki bir kümenin HTML meta etiketine göre önceliğe sahip olduğunu unutmayın. HTML meta etiketi yalnızca, sayfa HTTP yerine yerel disk dosya sisteminden açıldığında kullanılır.
Ayrıca tarayıcım şu şekilde ayarlandı Unicode (UTF-8)
:
Bu yalnızca istemciyi hangi kodlamanın karakterleri yorumlamak ve görüntülemek için kullanacağını zorlar. Ancak asıl sorun, ’
bunun yerine istemciye zaten gönderiyor olmanız (UTF-8 ile kodlanmış) ’
. İstemci, ’
UTF-8 kodlamasını kullanarak doğru şekilde görüntülüyor . Müşteri, örneğin ISO-8859-1'i kullanmak için yanlış bilgilendirildiyse, ââ¬â¢
bunun yerine muhtemelen görmüşsünüzdür .
Bir veritabanı ile ASP.NET 2.0 kullanıyorum.
Bu büyük olasılıkla sorununun yattığı yerdir. Verilerin neye benzediğini bağımsız bir veritabanı aracıyla doğrulamanız gerekir.
Eğer ’
karakter var, o zaman doğru veritabanına bağlanmak değildir. Veritabanı bağlayıcısına UTF-8 kullanmasını söylemeniz gerekir.
Veritabanınız içeriyorsa ’
, dağınık olan sizin veritabanınızdır. Büyük olasılıkla tablolar kullanılacak şekilde yapılandırılmamıştır UTF-8
. Bunun yerine, yapılandırmaya bağlı olarak değişen veritabanının varsayılan kodlamasını kullanırlar. Sorununuz buysa, genellikle UTF-8'i kullanmak için tabloyu değiştirmek yeterlidir. Veritabanınız bunu desteklemiyorsa, tabloları yeniden oluşturmanız gerekir. Tabloyu oluştururken tablonun kodlamasını ayarlamak iyi bir uygulamadır.
Büyük olasılıkla SQL Server kullanıyorsunuz, ancak işte bazı MySQL kodu ( bu makaleden kopyalanmış ):
CREATE DATABASE db_name CHARACTER SET utf8;
CREATE TABLE tbl_name (...) CHARACTER SET utf8;
Tablonuz zaten UTF-8 ise, bir adım geri gitmeniz gerekir. Verileri oraya kim veya ne koydu. Sorun burada. Örnek olarak, HTML formunda gönderilen, yanlış kodlanmış / kodu çözülmüş değerler verilebilir.
Sorunla ilgili daha fazla bilgi edinmek için işte birkaç bağlantı daha: