2010-12-07 4 views
2

私はUTF-8を使用しようとしていますが、すべてを正しく行っているかどうかはわかりません。 PHPを使用してJSONをデータベースに書き込んで、AJAX経由で取得し、HTMLで表示しようとしています。JavaScriptとPHPとMySQLを使用している場合は、すべて私のキャラクタセットを設定します

まず、PHP &のJSファイルをUTF-8形式で保存します。
PHPファイルにUTF-8ヘッダーを追加します。次のように
データベーステーブルが作成されます。

CREATE TABLE `achieve` ( 
`id` bigint(20) unsigned NOT NULL, 
`json` mediumtext, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

データベースに保存するときに、私は次のPHPコードを使用します。私はHTMLで値を表示する場合

$json=$_REQUEST["json"]; 
... 
$result = mysql_query($query); 
if ($line = mysql_fetch_assoc($result)) 
    $query = sprintf(
     'UPDATE achieve SET json = "%s" WHERE id=%d ', 
     mysql_real_escape_string($json), $ID 
    ); 
else 
    $query = sprintf(
     'INSERT INTO achieve (id, json) VALUES (%d, "%s") ', 
     $FBID, mysql_real_escape_string($json) 
    ); 
mysql_query($query); 

、まだのようです間違ったエンコーディングで私が逃しているものは何ですか?

+1

http://developer.loftdigital.com/blog/php-utf-8-cheatsheet – BalusC

答えて

0

...私は最終的に私の質問への答えを考え出しました! JSONをデータベースに保存する前に、JavaScriptでescape()を使用していました。どうやらこれはASCIIでしか機能しませんし、代わりにencodeURIComponent()を使うべきです。今それは動作します!

0

PHPMyAdminなどのデータベースブラウザを使用して、データが正しく保存されていることを確認できますか?事前にこれらの2つのクエリを実行してみてください。

SET NAMES utf8 
SET CHARACTER SET utf8 
ここにみんなの時間を無駄にして申し訳ありません
+0

これは何も変わっていないようです。 –

+2

データが正しく保存されていることを確認しましたか?キャラクタセットが正しくないチェーンがどこにあるかを識別して、それを修正する場所を知っておく必要があります。 –

+0

データがどのようなフォーマットで保存されているかを簡単に知るためのアドバイスはありますか? –

関連する問題