Re: iconv error detection
| From: | Moriyoshi Koizumi | 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