2013-02-01 93 views
5

我得到可愛的西班牙字符應該顯示的框。 (即:ñ,á等)。我已經確信,我的META HTTP-當量設置爲UTF-8:西班牙字符不能正確顯示

header('Content-type: text/html; charset=UTF-8'); 

這裏:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

,頁面標題設置爲UTF-8還我也確信是目前爲止我的代碼的開始階段:

<?php 
    setlocale(LC_ALL, 'es_MX'); 
    $datetime = strtotime($event['datetime']); 
    $date = date("M j, Y", $datetime); 
    $day = strftime("%A", $datetime); 
    $time = date("g:i", $datetime); 
?> 
    <a href="/<?= $event['request'] ?>.html"><?= $day ?> <?= $time ?></a> 

上述代碼位於where語句中。我已經讀過,切換數據庫中的排序規則也可能是一個因素,但我已經將它設置爲UTF-8 General ci。另外,該列中唯一的是DateTime,無論如何這是數字,無論如何不能整理。

結果:sbado 8:00

任何幫助是極大的讚賞一如既往。

+0

你強制php-> mysql數據庫連接也是UTF嗎?如果php-> mysql連接是別的,那麼有一個db和你的php以UTF格式輸出是毫無意義的。 **整個**渲染管道必須是相同的字符集,或者加入了適當的字符集轉換邏輯......如果在任何階段都有不匹配的情況,你會得到損壞的字符。 –

+0

是PHP的default_charset設置爲utf-8? – PoX

+0

是的,我將連接設置爲UTF 8也... mysql_set_charset('utf8',$ connnection); – NotJay

回答

6

相近的PHP考慮/ MySQL的/ UTF-8

  • 數據庫表和文本列應設置爲UTF-8
  • HTML頁面內容類型應設置爲UTF-8

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  • PHP應發出通知標題瀏覽器期望UTF-8

    header('Content-Type: text/html; charset=utf-8');

  • 的PHP,MySQL連接應設置爲UTF-8

    mysqli_query("SET CHARACTER_SET_CLIENT='utf8'",$conn);

    mysqli_query("SET CHARACTER_SET_RESULTS='utf8'",$conn);

    mysqli_query("SET CHARACTER_SET_CONNECTION='utf8'",$conn);

  • PHP INI已經DEFAULT_CHARSET設置應該是UTF- 8 如果您無權訪問,請使用ini_set('default_charset', 'utf-8');

+0

警告:mysqli_query()期望參數1爲mysqli,給出的字符串爲 – NotJay

+0

您正在傳遞$ conn作爲db鏈接的權利? – PoX

+0

$ conn = mysql_connect(「host」,「user」,「pass」); – NotJay

0

檢查您的代碼是否也編碼爲UTF-8(您可以在很多文本和代碼編輯器中看到此屬性)很重要。

因爲只有一個符號(黑色方塊),所以它可能是使用ISO-8859-1或ISO-8859-15。

0

您能否看到數據庫表中的內容是正確的,請使用phpmyadmin查看它的例如。如果是,請確保你的php文件是utf8編碼的,看看你的ide /編輯器配置。

4

我已經遭受了這個問題多年,我找不到任何邏輯,並且我嘗試了以上所有解決方案。

一個解決方案是爲所有文本製作html代碼。 這是我在其他所有失敗時使用的功能。

function span_accent($wordz) 
{ 

$wordz = str_replace("Á","&Aacute;",$wordz); 
$wordz = str_replace("É","&Eacute;",$wordz); 
$wordz = str_replace("Í","&Iacute;",$wordz); 
$wordz = str_replace("Ó","&Oacute;",$wordz); 
$wordz = str_replace("Ú","&Uacute;",$wordz); 
$wordz = str_replace("Ñ","&Ntilde;",$wordz); 
$wordz = str_replace("Ü","&Uuml;",$wordz); 

$wordz = str_replace("á","&aacute;",$wordz); 
$wordz = str_replace("é","&eacute;",$wordz); 
$wordz = str_replace("í","&iacute;",$wordz); 
$wordz = str_replace("ó","&oacute;",$wordz); 
$wordz = str_replace("ú","&uacute;",$wordz); 
$wordz = str_replace("ñ","&ntilde;",$wordz); 
$wordz = str_replace("ü","&uuml;",$wordz); 

$wordz = str_replace("¿","&iquest;",$wordz); 
$wordz = str_replace("¡","&iexcl;",$wordz); 
$wordz = str_replace("€","&euro;",$wordz); 
$wordz = str_replace("«","&laquo;",$wordz); 
$wordz = str_replace("»","&raquo;",$wordz); 
$wordz = str_replace("‹","&lsaquo;",$wordz); 
$wordz = str_replace("›","&rsaquo;",$wordz); 
return $wordz; 
} 
+0

你應該只能使用htmlentities:http://php.net/manual/ EN/function.htmlentities.php –

2

請檢查您的文件編碼。它必須在沒有BOM的UTF-8或UTF-8中。

改變你的文件編碼。使用Notepad ++(您也可以使用其他編輯器,您可以在其中更改文件編碼)。在菜單欄>選擇編碼>選擇任何沒有BOM的UTF-8或UTF-8。

有關沒有BOM的UTF-8和UTF-8的區別,請參閱鏈接。 What's different between UTF-8 and UTF-8 without BOM?

希望它能提供幫助。 :)