2009-04-21 12 views
0

私は1つのテーブルと1つのテーブルを持ち、特定のフィールドにはさまざまな衣服の説明があります。これらの記述には、ウムラウトまたは類似の文字が含まれることがよくあります。utf8アクセントの表示が一貫していません

私はこのフィールドを2つの異なるphpフィールドから取得していますが、私はデータに何もしていませんが、一貫して表示されません。 FILE1で

私はFILE1に上記の1を追加した場合、それは以下のように正しく表示、または

$con->query("SET NAMES 'utf8'"); 

header("Content-Type: text/html; charset=utf-8"); 

を追加しますが、データが正しく表示されません。

FILE2では、それだけで

$con->query("SET NAMES 'utf8'"); 

が設定され、正しく表示されます。

セット名のクエリで労働組合のいずれかで

header("Content-Type: text/html; charset=utf-8"); 

の追加、またはセット名のクエリーを残して、それが正しく表示されない原因となります。

$con->set_charset("utf8"); 

はいずれの点でも違いはないようです。

この問題は、WindowsおよびLinux上のInternet ExplorerおよびFirefox上に存在します。

一貫性表示データの例:

ED HARDY SCHUHE IM JAPAN-STYLE, GRÖßE 36 

ファイル1:

<?php 
header("Content-Type: text/html; charset=utf-8"); 
if (isset($_GET["pk"])) { 
    $pk = $_GET["pk"]; 
} 
$con = mysqli_connect("localhost","user","password", "database"); 
if (!$con) { 
    echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error(); 
    exit; 
} 
$con->query("SET NAMES 'utf8'"); 
$retreiveQuery = 'SELECT ARTICLE_NAME FROM AUCTIONS WHERE ARTICLE_NO = ?'; 
if ($getRecords = $con->prepare($retreiveQuery)) { 
    $getRecords->bind_param("s", $pk); 
    $getRecords->execute(); 
    $getRecords->bind_result($ARTICLE_NAME); 
    while ($getRecords->fetch()) { 
     echo "<h1>".$ARTICLE_NAME."</h1>"; 
    } 
} else { 
    print_r($con->error); 
} 

ファイル2:

<?php 
header("Content-Type: text/html; charset=utf-8"); 
if (isset($_GET["brand"])) { 
    $brand = $_GET["brand"]; 
} 
$con = mysqli_connect("localhost","user","pass", "database"); 
if (!$con) { 
    echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error(); 
    exit; 
} 
$con->query("SET NAMES 'utf8'"); 
$brand = '%' . $brand . '%'; 
$rows = getRowsByArticleSearch($brand); 
echo "<table border='0' width='100%'><tr>" . "\n"; 
foreach ($rows as $row) { 
    $pk = $row['ARTICLE_NO']; 
    echo '<tr id="article_' . $pk . '">' . "\n"; 
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\', \'' . $title . '\', \'' . $pg . '\')">'.$row['ARTICLE_NAME'].'</a></td>' . "\n"; 
    echo '</tr>' . "\n"; 
} 
echo "</table>\n"; 
function getRowsByArticleSearch($searchString) { 
    $con = mysqli_connect("localhost","user","pass", "db"); 
    $recordsQuery = "SELECT ARTICLE_NAME FROM AUCTIONS WHERE lower(ARTICLE_NAME) LIKE ? and SUBCAT='' LIMIT 0,20"; 
    if ($getRecords = $con->prepare($recordsQuery)) { 
     $getRecords->bind_param("s", $searchString); 
     $getRecords->execute(); 
     $getRecords->bind_result($ARTICLE_NAME); 
     $rows = array(); 
     while ($getRecords->fetch()) { 
      $row = array(
          'ARTICLE_NAME' => $ARTICLE_NAME, 
         ); 
      $rows[] = $row; 
     } 
     return $rows; 
    } else { 
     print_r($con->error); 
    } 
} 

私は、index.phpを用いて、AJAX applicaitionを有します私が設定したもの

header("Content-Type: text/html; charset=utf-8"); 

次に、file2を使用してajax経由でコンテンツを含むレイヤーをロードします。これにより、データが正しく表示されません。データはfile1を使用して別のレイヤーにデータをロードするリンクになり、データが正しく表示されます。

矛盾がどこから来ているのか分かりません。

編集:

データは、設定された名前と設定ヘッダを持つファイル1で正しく表示され、ページがUTF-8として示しています。

ファイル2は、Webページ情報がISO-8859-1であることを示すときにのみデータを正しく表示します。これは、セット名を省略してヘッダーを設定することを意味します。

+0

(私の推測では、file2.phpまたはindex.phpのは、他のエンコーディングで保存されているだろう)!ここで確認してください:http://stackoverflow.com/questions/346531/utf8-problem-with-mysql-5/346552#346552 – markus

答えて

0

ファイルがutf8エンコードで保存されていることを確認してください。 これはおそらくあなたのIDEまたはテキストエディタで行うことができます。私。日食中にあなたが選ぶことができます編集 - >セットエンコーディング

これは前に頼まれてい

関連する問題