2

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>

これを回避する方法を知っている人はいますか?文法的に正しくない場合でも、それらをハイフンに置き換える必要がありますか、またはデータベースに表示されるとおりに出力する方法はありますか?

4

1 に答える 1

0

データベースからデータを取得する前に同じ MySQL コマンドを追加すると、問題が解決しました。

mysql_query('SET NAMES utf8'); // Use utf-8

なぜこれが必要なのかわかりませんが、調査して、これをデフォルトにできるかどうかを確認します。

于 2013-01-24T14:09:49.727 に答える