2011-12-23 23 views
2

まれな特殊文字(∨∧→↔∴)を挿入しようとすると、疑問符として保存されます。しかし、もっと一般的な特殊文字を挿入しようとすると、すべてうまく行きます。MySQLは一般的な特殊文字を保存しますが、希な文字は保存しません

すべての変数、データベース、テーブル、および接続をUTF-8に設定しましたが、まだ運がありません。私は何が欠けていますか?前もって感謝します!ここで

は、最小限の例です。

<?php 
header('content-type:text/html; charset=utf-8;'); 

$connection = mysql_connect('localhost', 'root', ''); 
mysql_select_db('test', $connection); 
mysql_set_charset('utf8', $connection); 
mysql_query('SET NAMES UTF8'); 

$special_character = '∴'; 

echo 'Encoding of the special character before insert: '.base64_encode($special_character).'<br />'; 

mysql_query('INSERT INTO table (column) VALUES ("'.$special_character.'")'); 

$query = mysql_query('SELECT column FROM table'); 
while ($ROW = mysql_fetch_assoc($query)) 
    { 
    echo 'Encoding of the special character after retrieval: '.base64_encode($ROW['column']).'<br />'; 
    echo 'Output: '.$ROW['column'].'<br />'; 
    } 

mysql_close($connection); 
?> 

このスクリプトの出力は次のとおりです。検索した後に特殊文字の4oi0

エンコード:挿入する前に、特殊文字の

エンコーディング:Pw ==

出力:?

my.cnfファイルを持たないMac OSX用の標準MySQLインストールがあるからでしょうか?おそらく、このインストールに付属するデフォルトはUTF-8ではないでしょうか?誰でも知っていますか?

更新:Webホストでコードを実行すると表示されないため、問題はローカルインストールのMySQLにあると判断しました。私はまだそれを解決したい。

+2

本当に疑問符として保存されているのですか、そういう形でphpmyadmin/browserが表示されていますか? –

+0

フォントの問題?文字を出力するのにあなたはどんなフォントを使用していますか?どのように入力していますか? –

+0

私はPHP経由とTerminal経由の両方で入力しようとしましたが、どちらも表示しようとしました。まだ疑問符が表示されます。 – Sophivorus

答えて

0

MySQLのローカルインストールで問題が発生したようです。私はMac OSX 10.5にバンドルされた古いバージョンを使用していました。私はMySQLの最新バージョンをダウンロードしてインストールし、問題を解決しました。

それで、男の子と女の子のために、あなたが使用するソフトウェアの最新バージョンを使用するのは常に良いことです。

0

私は以前のEclipse Javaコンソールで同様の問題を抱えていました。私の場合のデータベースの情報は適切に保管されていました。何が起こったのは、コンソールがそれらの文字を表示するためのものではないということです。

私のアプリケーションでは、特殊文字を含むファイルを生成し、メモ帳で開いたので、ファイルに適用する文字セットを変更できます。私はロシア語の文字でこの問題を抱えていた。

0

それはあなたがUTF-8のために例えば を使用する文字セットテーブル内のコンテンツ必要があり、データベース内のどのようなあなたが保存:あなたは1を逃した http://www.utf8-chartable.de/

+0

UTF-8を使用するが表示されないことを意味するなど... – Karlson

+0

あなたがテーブルの文字セットをUTF-8に変換する必要があると言っていたら、私はすでにそれをしています。 – Sophivorus

0

。 mysqlへの接続もUTF8に設定する必要があります。最初にmysqlに接続した後、最初の "query"は "SET NAMES UTF8"でなければなりません。ターミナルプログラムを使用している場合は、その "クエリ"も実行してください。

+1

私はそれを追加しようとしましたが、違いはありません(例を更新しました)。また、私は、mysql_set_charset()関数が他のもののなかでSET NAMESが何をするのかをどこかで読んでいます。 – Sophivorus

関連する問題