views:

1200

answers:

3

I'm trying to display Japanese characters on a PHP page. No loading from the database, just stored in a language file and echo'ed out.

I'm running into a weird scenario. I have the page properly setup with UTF-8 and I test a sample page on my local WAMP server and it works.

The moment I tested it out our development and production servers the characters don't display properly.

This leads me to believe then that it's a setting in php.ini. But I haven't found much information about this so I'm not really sure if this is the issue.

Is there something fundamental I'm missing?

Thanks

+1  A: 

Firstly, I'll assume the same client machine is used for both tests.

So, use Firebug or your tool-of-choice to check the HTTP response headers on your local server, and compare them with the headers generated by the other servers. You will no doubt find a difference.

Typically your server should be including a header like this in the response:

Content-Type: text/html; charset=UTF-8

If the headers on the two systems look pretty much the same, grab the body of both responses and load it up in a hex editor and look for encoding differences.

Paul Dixon
+1  A: 

You have to deliver the documents with the proper encoding declaration in the HTTP header field Content-Type.

In PHP you do this via the header function before the first data has been send to the client, so preferably as one of the first statements:

<?php
    header('Content-Type: text/html;charset=utf-8');

    // the rest
Gumbo
Thanks for the reply, you were right, I firebugged it and that's exactly the problem. Love this site.
AndreLiem
Unhappily we still live in an ISO 8859-1 world …
Gumbo
+1  A: 

Since you've stated that it is working in your development environment and not in your live, you might want to check Apache's AddDefaultCharset and set this to UTF-8, if it's not already.

I tend to make sure the following steps are checked

  1. PHP Header is sent in UTF-8
  2. Meta tag is set to UTF-8 (Content-Type)
  3. Storage is set to UTF-8
  4. Server output is set to UTF-8

That seems to work for me. Hope this helps.

Kieran Hall
Thanks, I'll have to test it out but that looks to be everything I need.
AndreLiem