Hubro
Hubro

Reputation: 59333

How do I get PHP to accept ISO-8859-1 characters in general?

This has been bugging me for ages and I want to get to the bottom of this once and for all. I have an associative array which fields I have defined using ISO-8859-1 characters. For instance:

array("utført" => "red");

I also have another array that I have loaded in from a file. I have printed this array out in a browser, checking that values like Æ, Ø and Å is intact. I try to compare two fields from these arrays and I'm slapped by the message:

Undefined index: utfã¸rt on line 39

I can't help but sob. Every single damn time I involve any letters outside UTF-8 in a script they are at some point converted into ã¸r or similar nonsense.

My script file is encoded in ISO-8859-1, the document from which I'm loading my data is the same, and so is the MySQL table I'm trying to save the data to.

So the only conclusion I can draw is that PHP isn't accepting just any character-sets into it's code, and I have to somehow force PHP to speak Norwegian.

Thanks for any suggestions

Just FYI, I won't accept any answers in the lines of "Just don't use those characters" or "Just replace those characters with UTF equivalents at file load" or any other hack solutions

Upvotes: 1

Views: 3449

Answers (1)

Wh1T3h4Ck5
Wh1T3h4Ck5

Reputation: 8509

When you read your data from external file try to convert them in proper encoding.

Something like this I have on my mind...

  $f = file_get_contents('externaldata.txt');
  $f = mb_convert_encoding($f, 'iso-8859-1');
  // from this point deal with $f whatever you want

Also, look at mb_convert_encoding() manual for more info.

Upvotes: 1

Related Questions