Re: iconv error detection
Moriyoshi Koizumi <[email protected]>
| Newsgroups | gmane.comp.php.internationalization |
|---|---|
| Message-ID | <[email protected]> |
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("x81x01");
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
>
>
>
--
PHP Internationalization Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php