2012-04-19 11 views
2

こんにちは、ギリシャ語で書かれた文字列を、mysqlデータベースにその一部を追加する意図で、cmdで実行されているPHPスクリプトで "ISO-8859-7"をエンコードしたサイトから読んでいます。問題は、データベースに何かを追加する前にエコーが発生し、エンコーディングの問題があるようだということです。私はコードの関連部分を添付しています。ギリシャ語のPHPエンコーディング

$fil1=hitFormGet("http://www.topsites.gr/gr_domain_list/".$site->href); 
$fil1=iconv("ISO-8859-7","UTF-8",$fil1); 
$html1=str_get_html($fil1); 
$data=$html1->find('td class="res3" table tbody table tbody tr'); 
echo "ttl".$data[4]->plaintext."\n"; 

と出力が TTLÎ|ιλοξÎμνÎμίサイトです:私

±II(それはあまりにも、ここでは異なる表示されます...)

+1

持っているあなたはsetted正しい文字エンコーディング(utf-8)? – F21

+0

ノップ私は知らない... – Evan

+1

あなたのページの文字エンコーディングに問題があるかどうかを判断するには、ページを右クリックして文字エンコーディングをutf-8に変更してください。それがうまく表示されたら、phpはutf-8としてcharsetヘッダを送ってください: 'ini_set( 'default_charset'、 'UTF-8');' – F21

答えて

3

使用UTF-8都度PHPとMySQLを扱っています。 5.3.6セット

$DB_USERNAME = ''; 
$DB_PASSWORD = ''; 
$DB_HOST = ''; 
$DB_NAME = ''; 

$pdo_attributes = array(); 
$pdo_attributes[PDO::ATTR_EMULATE_PREPARES] = FALSE; 

$dsn = sprintf('mysql:dbname=%s;host=%s;charset=utf8', $DB_NAME, $DB_HOST); 
$pdo = new PDO($dsn, $DB_USERNAME, $DB_PASSWORD, $pdo_attributes); 

また、PHP <にこの追加の属性::ここで私は接続方法です

$pdo_attributes[1002] = 'SET NAMES utf8'; 

整数1002はPDO :: MYSQL_ATTR_INIT_COMMANDを表し、しかし、そのコマンドはPHP <に壊れています5.3.1。

この回答の元の内容は以下のとおりですが、現在は古くなっています。これは、時に必要であったいくつかの他のちんぷんかんぷん防止のヒントと、任意のより多くのをお勧めしていない古いmysql_*機能を使用して接続する方法です:、レンダリングされたページで

mysql_connect ("localhost", "DB_USER", "DB_PASSWORD") or die (mysql_error()); 
mysql_select_db ("DATABASE_NAME") or die (mysql_error()); 

mysql_query("SET character_set_client=utf8"); 
mysql_query("SET character_set_connection=utf8"); 
mysql_query("SET character_set_database=utf8"); 
mysql_query("SET character_set_results=utf8"); 
mysql_query("SET character_set_server=utf8"); 
mysql_query("SET NAMES 'utf8'"); 
+0

Thnxとても役に立ちました。 – Evan

+0

ちょうど私の一日を作ってくれてありがとう! –

+0

@MurtazaAshraf:助けてくれてうれしいですが、もうmysql_ *関数を使うべきではありません。私はちょうどPDOのための答えを更新しました、代わりにそれを使用してください! – dotancohen

関連する問題