1

新しいプロジェクトを作るたびに、データベースの照合順序を UTF-8 で作成するのを忘れていたり、é/à/.. のように見えない文字がすり抜けたり、ダブル.. またはトリプル ... 非常に厄介なようです。私は通常、mysqli_real_escape_stringを使用して、文字を確実に書き留めます。それらを印刷するときは、htlmentitiesを使用します。しかし、それはすべての文字で機能するわけではなく、間違いなく double .. または triple ... では機能しません。

これらの特殊文字で問題が発生しないように、プロジェクトを設定するときに覚えておくべき一般的なルール/ガイドラインはありますか?

4

1 に答える 1

1

プロジェクトを設定する際に留意すべき一般的なルール/ガイドラインはありますか?

もちろん。
データベース接続の文字セットは、HTML ページの実際の文字セットと常に一致するように設定してください。

たとえば、ページが utf-8 であるとします。

mysqli_set_charset($conn,'utf8');

接続直後

のページが Windows-1251 にある場合は、それを作成します

mysqli_set_charset($conn,'cp1252');

等々

また、クエリに動的に追加する文字列リテラルmysqli_real_escape_stringをフォーマットするために常に使用し、ユーザー入力を HTML ページに出力するときに 使用します。
htmlspecialchars()

更新:
また、必要なすべての文字をサポートする文字セットを使用してテーブルをセットアップする必要があります (UTF-8 が推奨されるデフォルトです)。

CREATE TABLE `table` (
    ...
) DEFAULT CHARSET=utf8

このような定義でテーブルを作成する場合、データに ?s が含まれることはありません

于 2013-01-29T08:47:48.883 に答える