これが私にしばらく頭痛を与えてきた私の問題です。東ヨーロッパの発音区別符号(主にăĂîÎşŞţŢâÂ)を適切に処理するには、Webアプリケーションが必要です。データベースはそれらを適切に処理し、phpスクリプトはそれらを適切に処理します(すべてのphpスクリプトはutf-8エンコーディングを使用します)が、フォームを処理するときに問題があります。
たとえば、以下をデータベースに挿入すると、正しく処理され、文字が適切にエンコードされ、適切に保存され、適切に表示されます。
$insert_value = htmlentities('ă Ă î Î ş Ş ţ Ţ â Â',ENT_COMPAT, "UTF-8");
ただし、text / textarea入力に同じ文字列を入力し、POSTを使用して送信する場合:
$insert_value = htmlentities($_POST['test_string'],ENT_COMPAT, "UTF-8");
これにより、空の文字列が返されます。
スクリプトがFirefoxで受信しているPOSTを確認しましたが、「şŞţŢ」文字の代わりに奇妙な記号(ºªþÞ)が表示されるので、htmlentitiesが空に戻っているのはそのためだと思います。
フォームのenctypeをmultipart/form-dataに設定しようとしましたが、正しく送信されているようですが、htmlentitiesを適用しても、どういうわけか(たとえば$_POST['ta'] = ăĂîÎşŞţŢâÂ, htmlentities($_POST['ta'],ENT_COMPAT, "UTF-8") returns $kappa;
)
編集:decezeに感謝します。そのリンクは、htmlentitiesを呼び出さずにWebアプリケーションのエンコーディングを処理するのに役立ちました。php、html、データベース間の発音区別符号のジャグリングに問題がある人には、この記事をお勧めします。