HTTP giriş/çıkış karakter kodlaması dönüşümü ikil verileri de dönüştürebilir, HTTP girdi/çıktısında ikil veri kullanılması durumunda karakter kod dönüşümünü kullanıcının denetleyeceği varsayılır.
Bilginize:
PHP 4.3.2 ve öncesinde, bu işlevsellikle ilgili bir sınırlama vardır. form elemanının enctype özniteliğine multipart/form-data değeri atanmışsa mbstring POST verisinde karakter kodlaması dönüşümü yapmaz. Bu bakımdan, böyle bir durumda, gerekirse gelen veriyi kendiniz dönüştürmelisiniz.
PHP 4.3.3'ten itibaren, HTML formunun enctype özniteliğine multipart/form-data atanır ve php.ini dosyasında mbstring.encoding_translation yönergesine On değeri atanırsa POST edilen değişkenler ve karşıya yüklenen dosyaların isimleri de dahili karakter kodlamasına dönüştürülür. Bununla birlikte, sorgu anahtarlarına dönüşüm uygulanmaz.
HTTP girdi karakter kümesini bir PHP betiğinden denetlemenin bir yolu yoktur. HTTP girdi karakter kümesi dönüşümü php.ini dosyasından kapatılır.
Örnek 1 - HTTP girdi dönüşümünün php.ini'de kapatılması
;; HTTP girdi dönüşümünü kapatalım
mbstring.http_input = pass
;; HTTP girdi dönüşümünü kapatalım (PHP 4.3.0 ve sonrası)
mbstring.encoding_translation = Off
PHP bir Apache modülü olarak kullanıldığında bu ayarları .htaccess ile dizinler için ve httpd.conf içinde sanal konaklar için geçersiz kılmak mümkündür. Ayrıntılar için Apache belgelerine ve bu kılavuzun Çalışma Anı Yapılandırması bölümüne bakınız.
Çıktı karakter kodlaması dönüşümünü etkin kılmanın çeşitli yolları vardır. Biri php.ini dosyasını kullanmak; diğeri ise ob_start() ile geriçağırım işlevi olarak mb_output_handler() kullanmaktır.
Örnek 2 - php.ini ayarları örneği
;; Çıktı karakter kodlaması dönüşümünü tüm PHP sayfaları için etkin kılalım ;; Çıktı tamponlamasını açalım output_buffering = On ;; çıktı dönüşümünü mb_output_handler yapsın output_handler = mb_output_handler
Örnek 3 - Betik örneği
<?php
// Çıktı karakter kodlaması dönüşümünü sadece bu sayfa için etkin kılalım
// HTTP Çıktı karakter kodlamasını SJIS yapalım
mb_http_output('SJIS');
// Geriçağırım işlevi olarak "mb_output_handler" belirtelim ve
// tamponlamayı başlatalım
ob_start('mb_output_handler');
?>