近年、インターネットやコンピュータ技術の急速な発展に伴い、さまざまな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 で一般的に使用される関数は次のとおりです:
MySQL と PHP の時刻エンコード方式が一致していない場合、時刻表示が文字化けする場合があります。したがって、実際のニーズに応じて、対応する時間エンコード変換を実行する必要があります。
具体的な解決策は次のとおりです。
$datetime = '2018-05-19 12:30:45';
$ timestamp = strtotime($datetime);
$time = date('Y年m月d日H:i:s', $timestamp);
このうち、$datetimeはMySQL 文字列の時刻文字。$timestamp はタイムスタンプ、$time はフォーマット後の時刻です。
$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 サイトの他の関連記事を参照してください。