簡體   English   中英

西班牙語字符顯示不正確

[英]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 中需要考慮的事項

  • 數據庫表和文本列應設置為 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( "Á","&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;
}

有類似的問題,我在這里找到了答案。 不顯示西班牙語字符

解決方案是從 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 配置。

使用utf8mb4Windows-1252

ini_set('default_charset', 'utf8mb4');

要么

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

然后使用標簽,

<meta charset="utf8mb4">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM