Re: iconv error detection

From: Date: Sun, 10 Oct 2004 16:22:38 +0000
Subject: Re: iconv error detection
References: 1  Groups: php.i18n 
Request: Send a blank email to php-i18n+get-766@lists.php.net to get a copy of this message
Hi, Just use set_error_handler() to catch errors that occurred within iconv(). Proof of concept: <?php class EncodingConverter {
    var $_last_err;
    var $_in_enc;
    var $_out_enc;
    function EncodingConverter($out_enc, $in_enc) {
        $this->_out_enc = $out_enc;
        $this->_in_enc = $in_enc;
    }
    function _handleError($err, $msg) {
        $this->_last_err = $msg;
    }
    function convert($str) {
        $this->_last_err = false;
        set_error_handler(array(&$this, '_handleError'));
        $retval = iconv($_in_enc, $_out_enc, $str);
        restore_error_handler();
        return $retval;
    }
    function getLastError() {
        return $this->_last_err;
    }
} $conv = &new EncodingConverter("EUC-JP", "Shift_JIS"); $result = $conv->convert("\x81\x01"); if ($conv->getLastError()) {
    echo "ERROR: ".$conv->getLastError()."\n";
} else { echo $result."¥n"; } ?> HTH, Moriyoshi On 2004/10/10, at 3:17, Fredrik Tolf wrote:
I'm writing a lightweight webmail in PHP, Dolda Webmail (<http://sf.net/projects/doldawebmail>), and I'm having some trouble with the iconv function provided by PHP. The problem is that when it encounters a multibyte sequence that cannot be decoded (like in an erroneously encoded message), it just stops there and returns the string up to that point, and I have not been able to find out any way of detecting that an error has indeed occurred. This is causing me a great deal of trouble... Does iconv provide a way of detecting if an error has occurred, and if so, how? Thanks for your attention! Fredrik Tolf -- PHP Internationalization Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.i18n (#766) next »