2016-08-14 8 views
1

私はウェブサイトに "é"の代わりに文字を表示しています。é、どうしてわからないのですか

このスレッドが見つかりましたUTF-8 all the way throughこれは素晴らしいですが、私を助けなかった。なぜ私は見ることができません。

データがMysqlデータベースから取得されました。 SHOW変数が得られます。

character_set_client : utf8 
character_set_connection : utf8 
character_set_database : utf8 
character_set_filesystem : binary 
character_set_results : utf8 
character_set_server : utf8 
character_set_system : utf8 
character_sets_dir : /usr/share/mysql/charsets/ 
collation_connection : utf8_unicode_ci 
collation_database : utf8_general_ci 
collation_server : utf8_general_ci 

マイphpのヘッダー+ PDO ::コネクション・コードが文字セットとしてUTF-8を設定し、以下の通りです:

<!DOCTYPE HTML> 
<html> 
    <head> 
     <?php header("Content-type: text/html; charset=utf-8"); ?> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
     $db = new PDO('mysql:host=host.mysql.db;dbname=dbname;charset=utf8', 'user', ''); 
     $db->exec('SET NAMES utf8'); 

その後、私のPDO:クエリのコードは次のようである、Iドン「Tは、文字セットを指定しますが、私はそれを行うには、なぜ/どのように表示されていない。

$query="SELECT * FROM db where rank = 1 limit 30"; 
$req = $db->query($query) or die(print_r($db->errorInfo(), true)); 
$req->setFetchMode(PDO::FETCH_ASSOC); 
$data1 = array(); 
$data1 = $req->fetchAll(); 

は最後に、私はé文字を与え、データを印刷します。

<?php for($i = 0; $i < 5; ++$i): 
    $title = utf8_encode($data1[$i]['title']); 
    echo mb_check_encoding($title, "UTF-8"); // prints 1 (True) 
    echo $title; // prints é 

注:私は "データ" の代わりに "はutf8_encode()" の "utf8_decodeを()" を使用する場合、私は文字を取得します。

私はメモ帳++を使用しています。私のファイルは「BOMなしのUTF8」にエンコードされています。

ヒント:ローカルホストデータベースで動作します。私はそれをオンライン(OVH)に入れ、今ではこれらの文字を持っています。このローカル・データベースで

、SHOW変数が得られます。

character_set_client : utf8mb4 
character_set_connection : utf8mb4 
character_set_database : latin1 
character_set_filesystem : binary 
character_set_results : utf8mb4 
character_set_server : latin1 
character_set_system : utf8 
character_sets_dir : c:\wamp64\bin\mysql\mysql5.7.11\share\charsets\ 
check_proxy_users :OFF 
collation_connection : utf8mb4_unicode_ci 
collation_database : latin1_swedish_ci 
collation_server : latin1_swedish_ci 
+1

1.なぜそこに 'utf8_encode'が必要ですか? 2.あなたのテーブルの構造は何ですか? – Dekel

+0

うわー。私は余分なutf8_encodeを削除し、それは動作します...!答えに入れる – Vincent

答えて

2

あなたのデータはまだあなたがそこにutf8_encode機能を持つべきではありませんUTF-8でエンコードする必要があります。

機能utf8_encodeは、ISO-8859-1文字列をUTF-8にエンコードします。これは必要なものではありません。

この機能を削除するだけで問題ありません。

関連する問題