UTF-8 準拠のデータベースに対して PHP を使用する。入力方法はこんな感じ。
- テキストエリアへのユーザータイプ入力
- javascript escape() でエンコードされたテキストエリア
- HTTP ポスト経由で渡される
- PHP rawurldecode() でデコード
- デフォルト設定で HTMLPurifier を通過
- MySQL 用にエスケープされ、データベースに保存されます
そして、それは通常の方法で出てきて、ページの読み込み時に unescape() を実行します。これは、たとえば、Word 文書から直接コピーして貼り付けて、スマート クォートを表示できるようにするためです。
しかし、HTMLPurifier は、%D6 にエスケープする Ö のような単純な % 式にエスケープする非 UTF-8 特殊文字を破壊しているようですが、スマートクォートは %u2024 などにエスケープし、その方法でデータベースに入ります。特殊文字とその直後の文字の両方を取り出します。
このプロセスで何かを変更する必要があります。おそらく、私は複数のことを変更する必要があります。
特殊文字が上書きされないようにするにはどうすればよいですか?