ホームページ  >  記事  >  バックエンド開発  >  PHP呼び出しで表示されるデータ時間が文字化けしている場合はどうすればよいですか?

PHP呼び出しで表示されるデータ時間が文字化けしている場合はどうすればよいですか?

PHPz
PHPzオリジナル
2023-04-11 09:11:28767ブラウズ

近年、インターネットやコンピュータ技術の急速な発展に伴い、さまざまなWebサイト開発言語も登場しており、Web開発の分野で広く使われているプログラミング言語としてPHP(Hypertext Preprocessor)が、言語開発者の間で人気となっています。しかし、PHP を使用して Web サイトを開発する過程で、必ずいくつかの問題が発生します. この記事では、PHP でデータを呼び出すときに発生する可能性のある時刻表示の文字化けの問題に焦点を当て、その解決策を説明します。

PHP はデータ処理や対話型操作によく使用されるサーバーサイド言語であるため、多くのプロジェクトで現在時刻の取得やタイムスタンプから時刻への変換など、時刻を処理する必要があります。 PHP では、通常、date() 関数を使用して現在時刻を取得します。ただし、時刻データを呼び出すと、時刻表示が文字化けすることがありますが、これは PHP と MySQL の時刻エンコード方法が一致していないことが原因です。

この問題を解決するには、まず時間エンコードの基本概念を理解する必要があります。 MySQL では、時刻データ型には DATE、TIME、DATETIME、TIMESTAMP が含まれます。このうち、DATE型は「YYYY-MM-DD」の形式で日付を表し、TIME型は「HH:MM:SS」の形式で時刻を表し、DATETIME型は時刻と日付を「HH:MM:SS」の形式で表します。 'YYYY-MM-DD HH:MM: SS' の TIMESTAMP 型は日付と時刻も表しますが、その形式は UNIX タイムスタンプ形式、つまりグリニッジ時間の 1970 年 1 月 1 日の午前 0 時から現在までの秒数です。 「1526713521」のように。 PHP で一般的に使用される関数は次のとおりです:

  • time(): 現在のタイムスタンプを取得します;
  • date(): タイムスタンプを日付にフォーマットします;
  • strtotime(): 日付をタイムスタンプに変換します。

MySQL と PHP の時刻エンコード方式が一致していない場合、時刻表示が文字化けする場合があります。したがって、実際のニーズに応じて、対応する時間エンコード変換を実行する必要があります。

具体的な解決策は次のとおりです。

  1. MySQL で、時刻フィールドの保存形式を「YYYY-MM-DD HH:MM:SS」に設定します。このようにして、クエリを実行するときに、データベースから取り出した時刻文字列をフォーマットする必要はありません。その形式はすでに PHP の時間要件を満たしているからです。
  2. PHP では、strtotime() 関数を使用して時刻文字列をタイムスタンプに変換し、date() 関数を使用してタイムスタンプを必要な時刻形式にフォーマットします。たとえば、MySQL の DATETIME 型を PHP の時刻形式に変換するには、次のコードを使用できます:

$datetime = '2018-05-19 12:30:45';
$ timestamp = strtotime($datetime);
$time = date('Y年m月d日H:i:s', $timestamp);

このうち、$datetimeはMySQL 文字列の時刻文字。$timestamp はタイムスタンプ、$time はフォーマット後の時刻です。

  1. MySQL から時刻フィールドを直接読み込んで出力すると、データ読み込み時に文字セット変換を行うこともできます。 MySQL データをクエリする場合、setcharset ステートメントを使用して文字セットを設定できます。例:

$db = new mysqli($host, $user, $password, $database);
$stmt = $db->prepare(“SELECT CONVERT(content USING utf8) as content, time FROM news;”);
$stmt->execute();

このステートメントではCONVERT 関数は、コンテンツ フィールドをデータベースのデフォルトのエンコーディングから UTF-8 エンコーディングに変換します。

つまり、PHP で時刻データを呼び出すときに文字化けが発生する問題は、本質的には PHP と MySQL の時刻エンコード方法が一致していないため、データ形式を変換してトランスコードする必要があることが原因です。上記の方法を採用すると、この問題を効果的に解決でき、時刻表示が正常に表示されるようになります。

以上がPHP呼び出しで表示されるデータ時間が文字化けしている場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。