utf8_decode

(PHP 4, PHP 5, PHP 7, PHP 8)

utf8_decodeDizgenin kodlamasını ISO-8859-1'den' UTF-8'e dönüştürür

Uyarı

Bu işlevin kullanımı PHP 8.2.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

Açıklama

utf8_decode(string$dizge): string

Belirtilen dizgenin karakter kodlamasını UTF-8'den ISO-8859-1'e dönüştürür. Geçersiz UTF-8 karakterler ve ISO-8859-1 kodlamasında mevcut olmayan (U+00FF üstü) karakterlerin yerine ? imi konur.

Bilginize:

ISO-8859-1 karakter kodlamasını kullanıyor olarak imlenmiş birçok sayfa aslında benzeri olan Windows-1252 kodlamasını kullanır ve tarayıcılar ISO-8859-1 kodlu sayfaları Windows-1252 olarak yorumlar. Windows-1252, belirli ISO-8859-1 kontrol karakterleri yerine Euro imi () ve kıvrımlı tırnaklar () gibi ek yazdırılabilir karakterlere sahiptir. Bu işlev, bu tür Windows-1252 karakterlerini doğru şekilde dönüştürmeyecektir. Windows-1252 dönüştürme gerekiyorsa farklı bir işlev kullanılmalıdır.

Bağımsız Değişkenler

dizge

UTF-8 ile kodlanmış bir dizge.

Dönen Değerler

Belirtilen dizgenin ISO-8859-1 gösterimini döndürür.

Örnekler

Örnek 1 - Temel örnekler

<?php
// 'Zoë' dizgesini UTF-8'den ISO 8859-1'e çevirir
$utf8_string = "\x5A\x6F\xC3\xAB";
$iso8859_1_string = utf8_decode($utf8_string);
echo
bin2hex($iso8859_1_string), "\n";

// Geçersiz UTF-8 dizilimler yerine '?' konur
$invalid_utf8_string = "\xC3";
$iso8859_1_string = utf8_decode($invalid_utf8_string);
var_dump($iso8859_1_string);

// ISO 8859-1'de bulunmayan '€' (avro) gibi
// karakterlerin yerine '?' imi konur.
$utf8_string = "\xE2\x82\xAC";
$iso8859_1_string = utf8_decode($utf8_string);
var_dump($iso8859_1_string);
?>

Yukarıdaki örneğin çıktısı:

5a6feb string(1) "?" string(1) "?"

Sürüm Bilgisi

Sürüm: Açıklama
8.2.0 Bu işlevin kullanımı artık önerilmiyor.
7.2.0 Bu işlev XML eklentisinden PHP çekirdeğine taşınmıştır. Önceki sürümlerde sadece XML eklentisi kurulduğunda kullanılabiliyordu.

Notlar

Bilginize: Kullanımdan kaldırma ve seçenekler

Bu işlevin PHP 8.2.0 ve sonrasında kullanımı önerilmiyor ve gelecek sürüede kullanımdan kaldırılacaktır. Mevcut kullanımlar gözden geçirilmeli ve uygun seçeneklerle değiştirilmelidir.

Benzer işlevsellik, ISO-8859-1 ve diğer birçok karakter kodlamasını destekleyen mb_convert_encoding() ile elde edilebilir.

<?php
$utf8_string
= "\xC3\xAB"; // UTF-8 'ë' (iki noktalı e)
$iso8859_1_string = mb_convert_encoding($utf8_string, 'ISO-8859-1', 'UTF-8');
echo
bin2hex($iso8859_1_string), "\n";

$utf8_string = "\xCE\xBB"; // UTF-8 'λ' (Yunanca küçük harfli lambda)
$iso8859_7_string = mb_convert_encoding($utf8_string, 'ISO-8859-7', 'UTF-8');
echo
bin2hex($iso8859_7_string), "\n";

$utf8_string = "\xE2\x82\xAC"; // UTF-8 '€' (Euro imi) (ISO-8859-1'de yok)
$windows_1252_string = mb_convert_encoding($utf8_string, 'Windows-1252', 'UTF-8');
echo
bin2hex($windows_1252_string), "\n";
?>

Yukarıdaki örneğin çıktısı:

eb eb 80

Kurulu eklentilere bağlı olarak mevcut olabilecek diğer seçenekler şunlardır: UConverter::transcode() ve iconv().

Aşağıdakilerin tümü aynı sonucu verir:

<?php
$utf8_string
= "\x5A\x6F\xC3\xAB"; // UTF-8 'Zoë'
$iso8859_1_string = utf8_decode($utf8_string);
echo
bin2hex($iso8859_1_string), "\n";

$iso8859_1_string = mb_convert_encoding($utf8_string, 'ISO-8859-1', 'UTF-8');
echo
bin2hex($iso8859_1_string), "\n";

$iso8859_1_string = iconv('UTF-8', 'ISO-8859-1', $utf8_string);
echo
bin2hex($iso8859_1_string), "\n";

$iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF8');
echo
bin2hex($iso8859_1_string), "\n";
?>

Yukarıdaki örneğin çıktısı:

5a6feb 5a6feb 5a6feb 5a6feb
UConverter::transcode() yöntemine 'to_subst' seçeneği olarak '?' belirtilmesi, geçersiz olan veya ISO 8859-1 ile gösterilemeyen diziler için utf8_decode() ile aynı sonucu verir.
<?php
$utf8_string
= "\xE2\x82\xAC"; // € (Euro imi) ISO 8859-1'de yoktur
$iso8859_1_string = UConverter::transcode(
$utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
var_dump($iso8859_1_string);
?>

Yukarıdaki örneğin çıktısı:

sring(1) "?"

Ayrıca Bakınız

To Top