2

私はこれを持っています

$html = <div>ياں ان کي پرائيويٹ ليمٹڈ کمپنياں ہيں</div> 

しかし、次の形式でmysqlデータベースに保存されています

&#1578;&#1608; &#1610;&#1729; &#1575;&#1587;&#1605;&#1576;
&#1604;&#1610; &#1605;&#1610;&#1722; &#1594;&#1585;
&#1610;&#1576; &#1705;&#1608; &#1570;&#1606;&#1746; 
&#1606;&#1729;&#1610;&#1722;

実際、mysqlデータベースからデータを取得してWebページに表示すると、正しく表示されます。でも知りたいのはデータベースに格納するUnicodeの標準フォーマットなのか、それともUnicodeのデータをそのまま格納するべきなのか、ということです。

4

4 に答える 4

2

データベースにユニコードを保存すると...

まず、データベースを「utf-general」に設定する必要がありますが、これはデフォルトではありません。MySQL では、テーブルを utf 形式に設定し、個々の列を utf に設定する必要があります。これに加えて、接続が utf-8 接続であることを確認する必要がありますが、その方法は、Unicode テキストをデータベースに保存するために使用する方法によって異なります。

接続の文字セットを設定するには、Mysqli を使用している場合、次のようにします。

$c->set_charset('utf8'); where $c is a Mysqli connection.

それでも、前に言ったように、データベースの文字セットを変更する必要があります。

編集:正直なところ、実際のユニコード文字として保存しますが、保存方法はあまり重要ではないと思います。ユーザーが「& #1610;」を入力した場合 誤って Unicode 文字として取得されることはありません。

編集: & と #1610; の間のスペースを削除すると、これが良い例です。私の答えでは、ユーザーがそのようなコードを使用してユニコード文字を作成できるようにしたくない場合を除き、サーバーから誤ってユニコード文字として取得されます。

stackoverflow は意図的にそれを行うため、完全な例ではありません。実際にはそのようには機能しませんが、概念は同じです。

于 2013-03-31T06:20:39.773 に答える
1

データの文字セットに問題があります。正確にはわかりません。これは回避策です。挿入/更新の前に実行してください:

$str = html_entity_decode($str, ENT_COMPAT, 'UTF-8');
于 2013-03-31T06:20:23.133 に答える
0

これは、ページのエンコーディングに関係なく、Web ページで正常に表示されるように PHP が Unicode をエンコードする方法である HTML エンコーディングのように思えます。

MySQL Workbench を使用して同じデータを取得しようとしましたか?

于 2013-03-31T06:19:15.363 に答える