Re: PHP + PostgreSQL: invalid byte sequence for encoding "UTF8"

From: Date: Sat, 21 Jul 2007 22:26:07 +0000
Subject: Re: PHP + PostgreSQL: invalid byte sequence for encoding "UTF8"
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-43838@lists.php.net to get a copy of this message
On 7/21/07, aldnin <aldnin@yahoo.de> wrote:
When I try to send this query (select 'lacarrière' as test;) to a UTF8 initialized pgsql-database (8.2.4) from PHP 5.2.3 I get this error: ERROR: invalid byte sequence for encoding "UTF8": 0xe87265
Short answer: start using utf-8 for just everything, and your problems will be gone. Long explanation: This is usually the case when you get data from a form and put it in the database, and the two aren't using the same encoding. I guess your pg connection is using unicode (so the db expects unicode input), and your html is set to something else. To fix this, you have two choices: 1-Run utf8_encode() on the input from your forms; or 2-Set all your html pages to use utf-8 encoding. IMHO, option 2 is the way to go. I've been using utf-8 for everything for quite some time, and has solved all my problems dealing with accents, and so on. You will need: - All your HTML files encoded to utf-8 (quite easy with iconv, if you are using Linux); - Add a "Content-type: text/html; charset=utf-8" to all your pages. This is easily done using PHP's header() function in a file included by all your scripts. This way, the pages will be unicode, any data entered will be posted as unicode, and you will have no problems sending them to a database that uses unicode. Forget the <meta> tag that sets the encoding. It's only used in case the server doesn't send a Content-type header, which isn't the case normally. By default, I think at least apache sends the content-type as iso8859-1. -- Bruno Lustosa <bruno@lustosa.net> ZCE - Zend Certified Engineer - PHP! http://www.lustosa.net/

« previous php.db (#43838) next »