Iconv kullanarak Zend Framework ve dize covertation

2 Cevap php

Bir site Solaris ve diğer iconv ayarları yüklü olduğu başka bir sunucuya taşındı. Ben Zend Framework gelen "StringLength" fonksiyonu ile her şeyi doğrulamak Şimdi zaman, benim komut bu hata ile başarısız:

Notice: iconv_strlen() [function.iconv-strlen]: Wrong charset, conversion from `UTF-8' to `UCS-4LE' is not allowed in /usr_files/phplibs/library/Zend/Validate/StringLength.php on line 213

Anladığım kadarıyla, sunucu "UCS-4LE" hakkında bilmek yapar ve ana sorundur.

Server yöneticisi o bu sorunu çözmek olabilir yanıtladı. Bu sunucuda herhangi bir fikir ben nasıl kurulum ZF var mı?

2 Cevap

iconv Kütüphane 'UCS-4LE' kodlanmış bir dize bekliyor, ama o 'UTF-8' olarak algılandı birini aldı. Muhtemelen yeni sunucuda farklı bir varsayılan kodlama var. constructor ({[) (1]} gibi) için üçüncü parametre geçen deneyin.

Eski bir konu olmasına rağmen, yeni bir sunucu çalışan xampp (Linux Suse, PHP 5.3.5, Zend Framewveyak 1.11.10) hareket ederken, bu benim için bugün geldi. Ben aşağıdaki test komut ile yukarıdaki oluşturulamamasını:

<?php
echo iconv_strlen("hello");
?>

Komut satırında ve tarayıcıda hem de. Bazı giderme sonra, ben şu sveyaunun hemen iki yollarından biri "çözüldü" keşfetti:

<?php
echo iconv_strlen("hello", 'utf-8');
?>

veya

<?php
iconv_set_encoding("internal_encoding", "UTF-8");
echo iconv_strlen("hello");
?>

however adding the iconv_set_encoding in ZF did not wveyak.

Changing php.ini to make the changes permanent did wveyak fveya ZF

[iconv]
iconv.input_encoding = ISO-8859-1
iconv.internal_encoding = UTF-8
iconv.output_encoding = ISO-8859-1

However the veyaiginal reason why iconv acts up on the new server is beyond me.