10

スペイン語の文字が表示される素敵なボックスが表示されます。(例:ñ、áなど)。メタ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-8Generalciに設定しています。さらに、その列にあるのはDateTimeだけです。これは数値であり、とにかく照合することはできません。

結果:s�bado8:00

いつものようにどんな助けでも大歓迎です。

4

7 に答える 7

13

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');

于 2013-02-01T15:50:37.420 に答える
5

私は長年この問題に苦しんでいて、ロジックが見つからず、上記のすべての解決策を試しました。

1つの解決策は、すべてのテキストの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;
}
于 2015-03-27T12:09:08.077 に答える
4

ファイルのエンコードを確認してください。BOMなしのUTF-8またはUTF-8である必要があります。

ファイルのエンコーディングを変更します。Notepad ++を使用します(ファイルエンコーディングを変更できる他のエディターも使用できます)。メニューバーで>[エンコード]を選択>[BOMなしのUTF-8またはUTF-8]を選択します。

BOMなしのUTF-8とUTF-8の違いについては、リンクを参照してください。 BOMなしのUTF-8とUTF-8の違いは何ですか?

それがお役に立てば幸いです。:)

于 2015-04-13T04:06:51.887 に答える
4

同様の問題を抱えて、私はここで答えを見つけました。 スペイン語の文字を表示しない

解決策は、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でファイルを開くと、文字がきれいに表示されました。私のエディタでは、意図した文字に関係なく、奇数の文字が表示されていました。この変更は私の要件で機能するようです。

于 2018-08-14T19:38:55.507 に答える
0

コードがUTF-8としてコード化されていることを確認することが重要です(このプロパティは多くのテキストおよびコードエディターで確認できます)。

記号(黒い四角)は1つしかないため、ISO-8859-1またはISO-8859-15を使用している可能性があります。

于 2013-02-01T15:32:40.283 に答える
0

データベーステーブルのコンテンツが正しいことを確認できますか。たとえば、phpmyadminで確認してください。そうである場合は、phpファイルがutf8でエンコードされていることを確認し、ide/editorの構成を確認してください。

于 2013-02-01T15:34:39.633 に答える
0

utf8mb4またはを使用するWindows-1252

ini_set('default_charset', 'utf8mb4');

また

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

次にタグを使用し、

<meta charset="utf8mb4">
于 2020-12-20T03:59:18.450 に答える