Form ve HTML Arıtma / MySQL ile sorunu Kodlama

2 Cevap php

Beni delirtiyor ...

Formu ile sayfası aracılığıyla Unicode (UTF-8) olarak kodlanmış:

<meta http-equiv="content-type" content="text/html; charset=utf-8">

veritabanında giriş sütun text utf8_unicode_ci

ile bir Word belgesine metin kopyalama "içinde, bu gibi: “1922.” insta-başarısız olduğunu ve â��1922.â�� ({[dahil, forma yeni veri yazarak veritabanında biter (2)]} çalışıyor ... Word'ün kesilir ve yapıştırma oluyor ...)

Perde arkasında PHP adımlar şunlardır:

  • POST kapmak değeri
  • HTML Arıtma varsayılan ayarları ile çalıştırmak
  • mysql_real_escape_string üzerinden çalıştırabilirsiniz
  • dBASE içine sorgu eklemek

Yardım?

2 Cevap

“1922.” and "1922." are 2 different strings.
The quotes from word are not double quotes “ != "

Eğer tarif sütun text utf8_unicode_ci. utf8_unicode_ci harmanlama, yani sütun üzerinde charset utf8 için ayarlanmış olduğundan emin olun.

Sonra Eminim SET NAMES utf8 COLLATE utf8_unicode_ci... kullanarak her bağlantı için kurulum doğru kodlama emin olur

Bunu yaptık ve hala düzgün kayıtlı değilse, sizin php etkin mbstrings olduğundan emin olun ve mb_ fonksiyonları ile çalışmak için deneyin.

Orada birçok kök aklınıza gelebilecek nedenleri vardır, ama charset sütun üzerinde ve SET NAMES ... bunu çözmek gerektiğini düşünüyorum.

mysql_set_charset veritabanı bunu UTF-8 kodlanmış dizeleri gönderme olacak bildirmek için arayın.

"dahil, forma yeni veri yazmaya çalışıyor ...

Peki " normal bir ASCII alıntı. ve değil, onlar ASCII olmayan karakterler akıllı tırnaklar, sensin. Word'ün gelen olsun önemli değildir; tüm ASCII olmayan karakterler aynı muamele edilecektir.

  • POST kapmak değeri
  • HTML Arıtma varsayılan ayarları ile çalıştırmak

Bu kötü bir fikir. HTML Arıtma HTML ve siz kullanıcıların HTML verebilmeleri için ihtiyaç nispeten nadir durumda, HTML olarak çıktı niyetinde dizeleri üzerinde çalıştırmak gerekir.

Bu all giriş metin üzerinde çalıştırmak için tamamen yanlış bir şey. Normalde herhangi bir eski metin izin olmalı ve çıkış o zaman HTML içinde bu metin üzerinde htmlspecialchars() çağrı olmalıdır.

Aksi takdirde ben bu yazı benim gibi < ve & girmek için kullanıcıların yeteneğini kırma konum ve çıkış zaman yine cross-site scripting-riske işlenmiş veya non- giriş-kaynaklı veri.