Hello!

I am trying to understand how PHP6 handling of unicode works, I think I am missing something.

My config is:

;;;;;;;;;;;;;;;;;;;;
; Unicode settings ;
;;;;;;;;;;;;;;;;;;;;

unicode.semantics = on
unicode.runtime_encoding = iso-8859-1
unicode.script_encoding = iso-8859-1
unicode.output_encoding = utf-8
unicode.from_error_mode = U_INVALID_SUBSTITUTE
unicode.from_error_subst_char = 3f
unicode.fallback_encoding = iso-8859-1

I use a mysql database, with iso-8859-1 (Portuguese - latin 1) text, with accented characters.

What I was trying to understand was, because unicode.runtime_encoding =
iso-8859-1, I tought that all internal operations were done in this
encoding, and only when outputting (unicode.output_encoding = utf-8) data
would be converted to utf-8. So to me, I did a mysql query with latin1, data
comes to my variables as iso-8859-1, I use them, and only when I echo'ed
them, they would become utf-8, from a iso-8859-1-to-utf-8-like function.

But when I do query in any record that have accented characters I get this warning (using mysql_fetch_assoc):

----------
Could not convert binary string to Unicode string (converter UTF-8 failed on bytes (0xE7) at offset 9)
----------

for all accented characters in all fields.

The strange thing to me, is the mysql_fetch_assoc function give this error
even before I accessed the field values, as I understanded from the above
explanation.

If I changed the set names query to:

 mysql_query('set names utf8', $this->mysql_link);

then it works, but I would like to understand how this works, to make my program the right way from the start.

Did I misundertood something?

Thanks,
Rangel
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to