Problems with character encoding in a new istall of Zen Photo

Hi,

A while ago I've reported a bug and suggested a fix:
http://www.zenphoto.org/support/topic.php?id=2458

I just installed Zen Photo successfully, for the first time on a server.

Because it's a first-time install, I've set this in zp-config.php:
`$conf['UTF-8'] = true;`

This should make so that everywhere all data is encoded as UTF-8, right? But somehow, characters are not encoded as they should:-(

OK, report:
1) Front-end of Zen Gallery: UTF-8, all looks OK, all is readable.
2) MySQL database: UTF-8, characters look like this: ����������� (this is a test name of an album, for example)

If I change the character encoding in my browser to Windows-1251, in the MySQL database characters start to look OK and readable (for example, the questionmarks you see, become: "Тестов Албум").

What's the reason for that? Isn't 'SET NAMES' properly working? Any other ideas?...

What should I test?

I want to be sure that when encoding is set to UTF-8 (in MySQL, in the front-end of the gallery, everywhere) characters can be read normally. But currently, UTF-8 is OK at the front-end and not at the back-end (MySQL). Ideas?...

:-)

Comments

  • ? :-(
  • acrylian Administrator, Developer
    Sorry, I have currently no idea.
  • @acrylian:

    OK, I've done some more testing:

    I installed a new copy of Zen on another hosting, just for test purposes. Set `$conf['UTF-8'] = true;` as in the other case.

    In front-end and in the MySQL database all is OK, all characters are normally readable.

    Now, where should I look for the problem, then?

    If I see `< ??? ??? ??? >` instead of normal letters in the MySQL database in the first case, does this mean that the 'SET NAMES' trick is not working there, for some reason?

    Is it possible that some other server configuration is interfering with it?

    I always thought that SET NAMES if specified in the application (right around the code where the connection to the database happens) is having the top priority and the encoding should be as defined there, even if globally on the server the default MySQL encoding is latin-1 or some other?... Or am I wrong?

    I'm just looking for clues, as currently I can't use the Zen when MySQL data is unreadble... :( (well, front end is OK, but having '???????' in the database will lead to trouble one day or the other...)
  • acrylian Administrator, Developer
    I am sorry, I am sadly neither a MySQL expert nor a server expert and this encoding stuff is one of the most difficult stuff I think.
    My database for example uses latin-swedish by default and is readable.

    Maybe you could post your server data (version number etc plus MySQL and PHP versionnumbers)? Maybe another developer (trisweb probably) or user has any idea.
  • I do not think that PHP & MySQL versions are so important, but I'll send the numbers, anyway:)

    The only guess I can make is that the MySQL database tries to use another encoding and ignores (possibly) the SET NAMES command specified by Zen -- so what happens is that UTF-8 data is encoded in the wrong encoding -- and while on the front-end all looks OK, on the back end - in the MySSQL - data becomes unreadble in UTF-8; but why's that, I cannot tell...

    --M.

    PS Here be some data:
    Apache version 1.3.37 (Unix)
    PHP version 4.4.6
    MySQL version 4.1.22-standard
  • trisweb Administrator
    I believe the reason you can't see the UTF-8 correctly in the database is that we use a simpler encoding for storing the database strings, and then convert it to the expected character set when it's rendered.

    So, as long as everything is working OK in the front end, I would not worry about it.

    Of course it would be best if everything was encoded UTF-8, and I think that's how it should be, I will take a look at the encoding sequence and see if I can find any issues.

    Please create a trac ticket if you're experiencing any problems due to this. Thanks!
  • vidisad Member
    I got the same broblem but at the front end. I did not check the database. Please see my post: http://www.zenphoto.org/support/topic.php?id=3030&replies=6 . Since I ran into the same problem after upgrading Wordpess script here is what they say about it:
    http://codex.wordpress.org/Converting_Database_Character_Sets
    I'm waiting for this to be solved and then otherwise i don't know what to do.
  • @trisweb:

    Hmmm, not sure... OK, what I have discovered: In the MySQL database I cannot read the data, when in UTF-8. If I switch encoding in the browser to Windows-1251, data becomes perfectly readble! So, it's encodings' mismatch, I guess?? Front-end is UTF-8, data is passed to the database, which doesn't store it as UTF-8 but as win-1251. Why? I don't know. For some reason, the SET NAMES works incorrectly then, or incompletely... these are just guesses, I don't know... Hm.
  • try to switch utf-8 off before updating your database and switch it on after updating - this works for me.
Sign In or Register to comment.