php文字列がエンコードに失敗した場所でmysqlデータが正しく出力されるのは本当に奇妙に聞こえますが、私が問題を解決しようとする方法は、このミスコーディングが生成された場所を特定しようとするステップに問題を分解することです!
まず、default_charset
を設定してみてください utf-8
へ php.iniファイル内。これは次のように実行されます:
default_charset = "utf-8";
プロバイダーの制限のためにそれができない場合でも、 ini_set 機能!
また、Webサーバーがutf-8でエンコードされたファイルも出力するように設定されていることを確認する必要があります。 Apacheでは、これはhttpd.confまたはhtaccessファイルの両方で実行できます:
AddDefaultCharset UTF-8
この時点ですべてが失敗した場合でも、phpヘッダーと相対的なhtml文字セットを使用してみてください:
<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
</body>
</html>
ただし、ファイルが適切なエンコーディングを使用して保存されることも非常に重要です(utf-8がほとんどの場合より適切な選択であり、問題をかなり防ぐのに役立ちます)。 utf-8とは異なるエンコーディングでファイルを保存した場合は、それらを破棄して、古いコンテンツから新しいファイルを作成します。 notepad ++は一般的にうまく機能しますが、ファイルが作成されると、エディターが実際にエンコーディングを適切に切り替えることができない場合があります。 converto to
を使用するだけです encode in
ではありません 機能!
それでも機能しない場合は、今では機能していると思いますが、 mb_detect_encoding
、 mb_convert_encoding
、 htmlentities
および