[英]Spanish Characters not Displaying Correctly
我得到了一個可愛的 框,其中應該顯示西班牙語字符。 (即:ñ、á 等)。 我已經確保我的元 http-equiv 設置為 utf-8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我還確保為 utf-8 設置了頁眉:
header('Content-type: text/html; charset=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 無論如何它是數字並且無論如何都無法進行整理。
結果:s bado 8:00
一如既往地非常感謝任何幫助。
在 PHP/MySQL/UTF-8 中需要考慮的事項
HTML 頁面 Content-Type 應設置為 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');
我已經遭受這個問題很多年了,我找不到任何邏輯,我已經嘗試了上述所有解決方案。
一種解決方案是為所有文本制作 html 代碼。 這是我在所有其他方法都失敗時使用的函數。
function span_accent($wordz)
{
$wordz = str_replace( "Á","Á",$wordz);
$wordz = str_replace( "É","É",$wordz);
$wordz = str_replace( "Í","Í",$wordz);
$wordz = str_replace( "Ó","Ó",$wordz);
$wordz = str_replace( "Ú","Ú",$wordz);
$wordz = str_replace( "Ñ","Ñ",$wordz);
$wordz = str_replace( "Ü","Ü",$wordz);
$wordz = str_replace( "á","á",$wordz);
$wordz = str_replace( "é","é",$wordz);
$wordz = str_replace( "í","í",$wordz);
$wordz = str_replace( "ó","ó",$wordz);
$wordz = str_replace( "ú","ú",$wordz);
$wordz = str_replace( "ñ","ñ",$wordz);
$wordz = str_replace( "ü","ü",$wordz);
$wordz = str_replace( "¿","¿",$wordz);
$wordz = str_replace( "¡","¡",$wordz);
$wordz = str_replace( "€","€",$wordz);
$wordz = str_replace( "«","«",$wordz);
$wordz = str_replace( "»","»",$wordz);
$wordz = str_replace( "‹","‹",$wordz);
$wordz = str_replace( "›","›",$wordz);
return $wordz;
}
有類似的問題,我在這里找到了答案。 不顯示西班牙語字符
解決方案是從 UTF-8 更改為 windows-1252。
(HTML) <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
(PHP) ini_set('default_charset', 'windows-1252');
我的問題是從 CSV 文件中讀取西班牙語字符。 當我在 Excel 中打開文件時,字符顯示正常。 在我的編輯器中,無論預期字符如何,都會顯示奇數字符。 此更改似乎適合我的要求。
請檢查您的文件編碼。 它必須是沒有 BOM 的 UTF-8 或 UTF-8。
改變你的文件編碼。 使用 Notepad++(您也可以使用其他編輯器來更改文件編碼)。 在菜單欄中 > 選擇編碼 > 選擇任何不帶 BOM 的 UTF-8 或 UTF-8。
UTF-8 和無 BOM 的 UTF-8 的區別見鏈接。 UTF-8 和沒有 BOM 的 UTF-8 有什么區別?
希望它能有所幫助。 :)
檢查您的代碼是否也編碼為 UTF-8 很重要(您可以在許多文本和代碼編輯器中看到此屬性)。
因為只有一個符號(黑色方塊),所以您可能使用的是 ISO-8859-1 或 ISO-8859-15 。
你能看到數據庫表中的內容是正確的嗎,用phpmyadmin查看一下,例如。 如果是,請確保您的 php 文件是 utf8 編碼的,請查看您的 ide/editor 配置。
使用utf8mb4
或Windows-1252
ini_set('default_charset', 'utf8mb4');
要么
header('Content-Type: text/html; charset=utf8mb4');
然后使用標簽,
<meta charset="utf8mb4">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.