0

これが私にしばらく頭痛を与えてきた私の問題です。東ヨーロッパの発音区別符号(主にăĂîÎşŞţŢâÂ)を適切に処理するには、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、データベース間の発音区別符号のジャグリングに問題がある人には、この記事をお勧めします。

4

1 に答える 1

2

コメントが役に立ったことをうれしく思います...

データベースに入るデータをHTMLエンコードしないでください。WebアプリでUnicodeを前面から背面に処理します。それを行うための落とし穴はたくさんありますが、前述の記事は最大のものを通過します。

于 2013-02-19T11:43:14.127 に答える