显示带有特殊字符的变量值

时间:2015-01-26 21:06:34

标签: php html character-encoding

我正在为多语言网站做一个简单的例子,我在一个独特的php文件中将所有不同的文本值保存在一个数组中。

<?php include_once 'common.php';?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $lang['PAGE_TITLE']; ?></title>
</head>

<body>
<div>
    <h1><?php echo $lang['HEADER_TITLE']; ?></h1>
    <h3><?php echo $lang['SLOGAN']; ?></h3>
</div>
<form name="lang" id="languages" method="post" action="">
    Language: 
    <select name="lang" onchange="document.lang.submit()">
        <option value="pt" <?php if($lng=="pt"){echo'selected';}?>>Português</option>
        <option value="en" <?php if($lng=="en"){echo'selected';}?>>English</option>
        <option value="es" <?php if($lng=="es"){echo'selected';}?>>Español</option>
    </select>
</form>
</body>
</html>

这是common.php

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_POST['lang']))
{
$lng = $_POST['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lng;

setcookie("lang", $lng, time() + (3600 * 24 * 30));
}
else if(isset($_SESSION['lang']))
{
$lng = $_SESSION['lang'];
}
else if(isset($_COOKIE['lang']))
{
$lng = $_COOKIE['lang'];
}
else
{
$lng = 'pt';
}

switch ($lng) {
  case 'pt':
  $lang_file = 'lang.pt.php';
  break;

  case 'en':
  $lang_file = 'lang.en.php';
  break;

  case 'es':
  $lang_file = 'lang.es.php';
  break;

  default:
  $lang_file = 'lang.pt.php';

}

include_once 'languages/'.$lang_file;
?>

这是一个laguage文件(带有特殊字符)。

<?php
$lang = array();

$lang['PAGE_TITLE'] = 'Primeiro Website Multílingua';
$lang['HEADER_TITLE'] = 'Primeiro Website Multílingua';
$lang['SITE_NAME'] = 'Primeiro Website Multílingua';
$lang['SLOGAN'] = 'Escolhe a tua língua';
?>

基本上字符集/编码不能用作UTF-8 我已经尝试过使用http header()请求,我认为这可能是因为文件在元标记之前被调用,但是仍然没有。

0 个答案:

没有答案