diff --git a/include/class.api.php b/include/class.api.php index 1bd25463484a4e2f01a1d72050dde4e92d89d967..8ad7ceb2d113fe9d86f9256406389a6b6ff19f17 100644 --- a/include/class.api.php +++ b/include/class.api.php @@ -255,7 +255,7 @@ class ApiJsonDataParser extends JsonDataParser { # PHP5: fopen("data://$data[5:]"); if (substr($data, 0, 5) != "data:") { $info = array( - "data" => $data, + "data" => $data, "type" => "text/plain", "name" => key($info)); } else { @@ -264,11 +264,17 @@ class ApiJsonDataParser extends JsonDataParser { list($type, $extra) = explode(";", $meta); $info = array( "data" => $contents, - "type" => $type, + "type" => ($type) ? $type : "text/plain", "name" => key($info)); if (substr($extra, -6) == "base64") $info["encoding"] = "base64"; - # TODO: Handle 'charset' hint in $extra + # Handle 'charset' hint in $extra, such as + # data:text/plain;charset=iso-8859-1,Blah + # Convert to utf-8 since it's the encoding scheme + # for the database. Otherwise, assume utf-8 + list($param,$charset) = explode('=', $extra); + if ($param == 'charset' && function_exists('iconv')) + $contents = iconv($charset, "UTF-8", $contents); } } unset($value);