2012-04-15 9 views
4

私はucs2_slovenian_ciエンコーディングでテーブルを持つMySQLデータベースを持っています。 utf-8エンコーディングWebページにテーブルの内容を書きたいと思います。文字の代わりにMySQL:ucs2_slovenian_ciからutf-8 to webページ

mysql_set_charset ("utf-8"); 
mysql_query("SET NAMES 'utf-8'"); 
... 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
... 
<?php echo utf8_encode($text); ?> 
... 

私はまだ変な看板(疑問符)をgetingよS、Cは、Z 何も動いていないようにみえ:これまでのところ私は試してみました。

奇妙なことは、PHPコマンドmysql_client_encoding($link)にはlatin1エンコーディングがあるということです。 Firefoxのページを見ると、UTF-8と書かれています。どうしましたか?

助けてください。

+0

'ucs2_slovenian_ci'はデータベース照合ですが、エンコードは' ucs2'です。 'iconv(" utf-8 "、" iso-latin-1 "、$ text)ではなく、' utf8_encode'ではなく 'iconv(" ucs-2 "、" utf-8 "、$ text) ) ') – kirilloid

答えて

2

エンコーディングしかし照合ないucs2_slovenian_ciエンコーディング

。照合とは、何かのソート方法に関する情報です。

あなたのウェブサイトでは、これは興味深いものではありません。なぜなら、それはデータベース自体が知っていることです。

あなたのウェブサイトスクリプトでは、必要なエンコーディング(ここではUTF-8)をデータベースに伝えることが重要です。

データベースクライアントコードを指定して、データベースサーバーに通知します。それを指定する方法については、データベースクライアントドライバのマニュアルを参照してください。それはそれのようになります。

mysql_set_charset("utf8", $link); 

は注意してください:正式それはUTF-8書かれている間、それはutf8です。これはMySQLデータベースで特別なものですが、UTF-8utf8と書いてください。

は使用しないでください:

mysql_query("SET NAMES 'utf-8'"); 

それは非推奨ですので(良くないだけでなくPHPマニュアルとWhether to use “SET NAMES”を参照してください)。あなたが期待するエンコードデータベースのクライアントを伝える場合

そして、あなたはこのように、自分自身をエンコードする必要はありません。

utf8_encode($text); 

は、その原料を削除し、あなたがそれを必要としません。

1

まずheader('Content-Type: text/html; charset=utf-8');

mysql_set_charset( "UTF-8")を追加します。

は次のようになります。

$デシベル=にmysql_connect($のホスト名、$ユーザ名、$パスワード);

mysql_set_charset( "utf8"、$ db);

また、UTF-8

でのMySQL DBのすべてでとにかくあなたがプレイしてもよいものを確認してください。

mb_convert_encoding($文字列、 "その他のエンコーディング"、 "UTF-8") ;

+0

mb_convert_encodingは特別なcharectersを書き込むのではなく無視します 私はすでにmysql_set_charset(" utf8 ")で試しています。それは動作しません ヘッダーはありません...ページ自体に問題はありませんが、ucs-2のデータベースにあるデータには問題があります。 – Ales

+0

@ user1077442:データベースのエンコーディングを変更する必要はありません。mysqlデータベースに必要なエンコーディングをmysqlデータベースに伝えておけば、 'utf8'のように。それはあなたに 'utf8'を与えます。後でそれをあなた自身で壊すと、それはあなたのせいです。しかし、mysqlはそれが命じられたことをします。 – hakre

+0

さて、私は何とかそれを働かせました。それは完璧ではありませんが、少なくとも私は文字を正しいものに置き換えることができます。私はまた、htmlentitiesはそれに訴えかかっていないために大きな問題であることに気づいた。皆さん、ありがとうございました – Ales

関連する問題