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