views:

18

answers:

3

Dear stackoveflow, I have this problem. I'm working with an old version of mssql (2000) that has all the tables encoded in windows 1252 (and that's it). I can write and read succesfully with php using this line:

<?php header('Content-Type: text/html; charset=windows-1252'); ?>

If I make a normal post everything works as expected, If I do it ajax style I write messed characters in the table. I've also tried this:

contentType: "application/x-www-form-urlencoded;charset=windows-1252",

With no luck. Can anybody help me?

Thank you

A: 

I think javascript sends the data in UTF-8, so you're lying when you say charset=windows-1252. You should send charset=utf-8 and then do the conversion to windows-1252 in PHP with mb_convert_encoding or iconv.

Disclaimer: I'm no Javascript expert.

Artefacto
+1  A: 

I think it is possible to change the character set for incoming data from the Ajax request in Javascript somehow, butt IIRC, it's complex and is likely to have cross browser issues.

If you are querying a PHP script, the easiest way woudl be to convert the data to UTF-8 there:

$data = "Höllo, thüs üs windows-1252 encoded data";

$data_utf8 = iconv("windows-1252", "utf-8", $data);

echo $data;
Pekka
A: 

javascript uses UTF-8 as internal encoding, so you have to change the encoding to UTF-8 backend.

jAndy
It seems to be UTF-16. See http://interglacial.com/javascript_spec/a-8.html
Artefacto