15

PHP でこのようなドイツの日付形式を作成しています14. März 2012(これは 2012 年 3 月 14 日です)。

私は$date[0]UNIXタイムスタンプを含む作業を行っており、このように読み取り可能なドイツの日付に変換しています。

$date_day_month = strftime('%d. %B', $date[0]);
$date_year = strftime('%Y', $date[0]);

echo $date_day_month . $date_year;

äただし、このようにウムラウトに疑問符が付きます

14. M�rz 2012

それはなぜですか、どうすれば修正できますか? 前もって感謝します。

4

3 に答える 3

46

私の場合、ロケールを変更するだけでうまくいきました。

それ以外の:

setlocale(LC_TIME, "de_DE");

使用する:

setlocale(LC_TIME, "de_DE.UTF-8");
于 2013-08-14T10:45:17.453 に答える
3

Windows環境(XAMPP)ではsetlocale(LC_TIME, "de_DE.UTF-8")問題を解決できなかったので、ロケールを使用することに頼り、 @Chrisが別の回答"de"へのコメントで提案したように、文字列を手動でutf8に変換しました:

setlocale(LC_TIME, "de");
$maerzLatin1 = strftime('%B', mktime(9, 0, 0, 3, 1, 2016));
$maerzUtf8 = utf8_encode($maerzLatin1);  // this one contains "März" UTF8-encoded
于 2016-02-23T15:31:59.593 に答える
2

ウェブページを utf-8 にしてみて、これをheadタグに入れてください:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

strftimeロケールの正しい設定に依存するためsetlocale()、php が実行されているマシンにロケールが存在することを確認してください。

アップデート

サーバーで次のコードを実行しました。

setlocale(LC_ALL, 'de_DE');
$date[0] = mktime( 1, 0, 0, 3, 2, 2012 );

$date_day_month = strftime('%d. %B', $date[0]);
$date_year = strftime('%Y', $date[0]);

echo $date_day_month . $date_year;

そしてそれは出力します:

02. März2012

于 2012-10-01T20:42:28.280 に答える