Ticket #81 (new defect)

Opened 3 months ago

MapServer/php/LoadMap.php sends native php string instead of utf8-encoded string

Reported by: schneiderei Assigned to: madair
Priority: P2 Milestone: 1.1
Component: MapServer Version: 1.0.6
Severity: Major Keywords: encoding, php, ajax
Cc: External ID:
state: New Browser: All
Operating System: All

Description

Using MapServer 5.0.2 as rendering engine for my Fusion application, I have issues with character encoding: All my ä, ö, and ü became ? or other cryptic characters. I did some research, and I think that the problem comes from encoding heterogeneities: Ajax sends strings as utf8 by default, php uses 1byte strings by default.

MapServer/php/LoadMap.php is responsible for generating a json-string from what MapScript? reads from the map file. It sends it back via Ajax with:

echo var2json($mapObj);

The function var2json generates a regular php string. I believe that this string needs to be converted to utf8 before it can be sent. I altered the above line to:

echo utf8_encode(var2json($mapObj));

and my ä, ö, and ü are now displayed properly in the Fusion application.