First question: it depends on what exactly goes in the string.
PHP (zaten PHP5, kadar), dizeleri bayt sadece dizileri vardır. Onlarla ilgili hiçbir zımni veya açık karakter kümesi vardır; Bu programcı izlemek gerekir şey. (Dosyanın kendisi UTF-8 olarak kodlanmış ise oldukça kolay) sadece tırnak arasında geçerli UTF-8 bayt koyarsanız Yani, o dize UTF-8 olacak ve güvenle üzerinde () strlen kullanabilirsiniz.
Eğer mbstring fonksiyonlarını kullanarak eğer Ayrıca, size açıkça dize mbstring.internal_encoding ile veya herhangi bir mbstring işlevine son argüman olarak da, set ne karakter anlatmamız gerek.
Second question: yes, with caveats.
Her ikisi de iki dize bağımsız geçerli bir UTF-8 (PHP'nin .
operatör olduğu gibi) byte-bilge birleştirilmiş güvenli olması ve hala geçerli UTF-8 olabilir. Ancak, bir POSTed dize geçerli bir UTF-8 olduğunu, bazı iş kendiniz yapmadan, hiçbir zaman emin olamayız. Çoğu DBMSs sizin için herhangi bir dönüşüm yapacak çünkü dikkatle, bağlantı karakter seti ise Veritabanı dizeleri, biraz daha kolaydır.