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:
HTML formunun
enctype
özniteliğinemultipart/form-data
atanır ve php.ini dosyasındambstring.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 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');
?>