无法在php脚本中将文本视为utf8

I have a script for real estate, it contains a locale file for translation, i translated it but the text displayed as question marks... tried the following with no success

  • adding <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> in head element

  • adding AddDefaultCharset utf-8 to .htaccess

  • adding AddDefaultCharset utf-8 to httpd.ini
  • adding this lines to php.ini

    default_charset = "utf-8" mbstring.internal_encoding=utf-8 mbstring.http_output=UTF-8 mbstring.encoding_translation=On mbstring.func_overload=6

here are some script pages:

index.php (control panel, here the translated text is also garbled)

<?php
ob_start();
?>
<!doctype html>
<html>
<head>
<title>Property Listing</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
{APP_TPL}
</body>
</html>
<?php include 'listings.php'; ?>

Listing.php

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<?php
if (!isset($_GET['iframe']))
{ 
$content = ob_get_contents();
ob_end_clean();
ob_start();
}    
if (!isset($_GET['controller']) || empty($_GET['controller'])) 
{ 
$_GET["controller"] = "Listings"; 
}
if (!isset($_GET['action']) || empty($_GET['action'])) 
{ 
$_GET["action"] = "index"       
include dirname(__FILE__) . '/index.php';
if (!isset($_GET['iframe']))
{
$app = ob_get_contents();
ob_end_clean();
$app = str_replace('$','&#36;',$app);
echo preg_replace('/\{APP_TPL\}/', $app, $content);
}
?>

preview (the main visitor page, all the text garbled)

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<?php
ob_start();
?>
<!doctype html>
<html>
<head>
<title>Property Listing</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
{APP_TPL}
</body>
</html>
<?php include 'listings.php'; ?>

en.php (locale file)

#Login
$PL_LANG['login_login'] = 'Admin login';
$PL_LANG['login_username'] = "المستخدم";
$PL_LANG['login_password'] = "كلمة السر";
$PL_LANG['login_login']    = "Admin Login";
$PL_LANG['login_register'] = "تسجيل";
$PL_LANG['login_err'][1] = "Wrong username or password";
$PL_LANG['login_err'][2] = "Access denied";
$PL_LANG['login_err'][3] = "Account is disabled";
$PL_LANG['login_error'] = "Error";

# Left menu
$PL_LANG['menu_home'] = "Home";
$PL_LANG['menu_properties'] = "Properties";
$PL_LANG['menu_options'] = "Options";
$PL_LANG['menu_install'] = "Install";
$PL_LANG['menu_preview'] = "Preview";
$PL_LANG['menu_logout']  = "Logout";
$PL_LANG['menu_users']   = "Users";

# General
$PL_LANG['_yesno']['T'] = "Yes";
$PL_LANG['_yesno']['F'] = "No";

Make sure the editor you are using to save those files is writing the file as UTF-8.

You can also try converting the text to UTF-8

$utf8_text = mb_convert_encoding($non_utf8, 'UTF-8', mb_detect_encoding($non_utf8));