emダッシュとenダッシュを含むPHPでMySQLデータベースフィールドを出力しようとしていますが、ROWは出力されますが、これらのダッシュの値は出力されません。
私が知る限り、これらは適切な英語で使用されるべき文字であるため、それらを削除したり、別の文字 (ハイフンなど) に置き換えたりする必要はないと思います。
INSERT の前にこのコードを追加することで、em ダッシュと en ダッシュをデータベースに適切に取得できます (この行がないと代わりに不要な文字が表示されます)。
mysql_query('SET NAMES utf8');
しかし、値は出力されません。データベース テーブルとそのフィールドは utf8_general_ci 照合順序を使用しており、PHP ページに次の行があります。
header('Content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
私は次のように値を出力しています:
echo nl2br(htmlentities(preg_replace("/[\r\n]+/", "\n\n", $row['someText'])));
フォーマットせずに値を出力すると、次のような疑問符が表示されます。
�</p>
これを回避する方法を知っている人はいますか?文法的に正しくない場合でも、それらをハイフンに置き換える必要がありますか、またはデータベースに表示されるとおりに出力する方法はありますか?