Diğerleri de belirtildiği gibi, büyük olasılıkla, bir karakter kodlama sorun var. Ben PHP kodlamalar emin değilim ama dikkate bütün resmi almak gerekir. Bu örnek için ben PHP komut dosyası FORM mesaja yanıt varsayarak yaşıyorum.
- Bazı app (sizinki, büyük olasılıkla) bazı kodlama kullanılarak kodlanmış ve tarayıcıya gönderilen bazı HTML yazıyor. Genel seçimler ISO-8859-1 ve UTF-8 vardır. Eğer her zaman UTF-8 kullanmak gerekir. Not: Bu web (ne yazık ki) için varsayılan değil.
- Tarayıcınız bu html indirir ve sayfa oluşturur. Tarayıcılar çoğunlukla, dahili Unicode kullanmak veya bazı üst kümesidir. Kullanıcı bir formu gönderir. Bu formdaki verileri genellikle bunu UTF-8 olarak size geri gönderilen alır UTF-8 göndermek sayfası Yani içeri gönderildi aynı kodlama ile kodlanmış.
- PHP gelen isteğin bayt okur ve kendi iç değişkenlerini ayarlar. Bu doğru kodlama toplama değilse, bir sorun olabilir yerdir.
Bir byte karşılaştırma parçalanır bir dize karşılaştırma yapıyor, ama karakterleri oluşturan bayt kullanılan kodlama bağlıdır. As Peter Bailey wrote,
- ISO-8859-1, bu karakter 0xBD olarak kodlanmış
- UTF-8, bu karakter 0xC2BD olarak kodlanmış
Sen emin beklediğiniz gibi oluyor yapmak için yolun her adımında metin kodlamasını doğrulamak gerekir. Sen nasıl sayfa değişiklikleri görmek için başka bir şey için tarayıcınızın otomatik tespit kodlama kodlama değiştirerek tarayıcıya gönderilen verileri kontrol edebilirsiniz.
Veri DB'den yerine tarayıcıdan gelen, ama değilse, sizin uygulaması ve DB arasındaki kodlamaları kontrol etmeniz gerekir.
Son olarak, ben senin gibi karşılaştırma için bir anahtar olarak 1 ½ gibi bir dize kullanmak için pratik bulunuyor öneririm. Ben 1.5 kullanıyorum ve veriler sadece nasıl görüntüleneceğini değiştirme sonra, ekran anda bu tespit tavsiye ederim. Avantajları: Bir dize, vb karşı Artı bu gibi hataları önlemek olarak değer sayısal olup olmadığını banyo sayısına göre sonuçlarını sipariş edebilirsiniz.