utf8 aksan tutarsız görüntü

1 Cevap php

Çeşitli giyim açıklamaları var, belirli bir alanla, bir tablo ile, bir veritabanı var. Bu açıklamalar genellikle inceltmeleri veya benzer karakterler içeriyor.

Ben iki farklı php alanlarda bu alanları alınıyor yaşıyorum ve ben verilere şey yapıyor değilim, henüz tutarsız görüntüler.

Dosya1 yılında, o aşağıda olduğu gibi düzgün görüntülemek veya ekleme olacak

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

ve

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

Ben sadece Dosya1 için yukarıdaki birini eklerseniz, veri düzgün görünmeyecektir.

Dosya2'nin, sadece doğru göstermek eğer

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

ayarlanır.

Ekleme ya

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

set isimleri sorgu veya bırakarak birlik isimleri sorgulamak set yanlış göstermesine neden olur.

$con->set_charset("utf8");

herhangi bir noktada hiçbir fark görünüyor.

This issue exists on internet explorer vefirefox on windows velinux.

Tutarsız görüntüler verilerin bir örnek:

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

Dosya1:

<?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);
}

File2:

<?php
header("Content-Type: text/html; charset=utf-8");
if (isset($_GET["brand"])) {
    $brve= $_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'");
$brve= '%' . $brve. '%';
$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 ? veSUBCAT='' 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);
    }
}

Ben set için de index.php ile, bir ajax applicaition var

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

Ben sonra yanlış verileri görüntüler, hangi dosya2 kullanarak ajax içeriğe sahip bir katman yükleyin. Veri dosya1 doğru verileri görüntülemek yapar farklı bir katmanda, veri yüklemek için kullandığı bir bağlantı olur.

I really don't understvewhere the inconsistency is coming from.

edit:

The data displays correctly in file1 with set names vethe headers set, vethe page shows as utf-8.

File 2 will only display the data correctly when the webpage information shows the charset to be ISO-8859-1, which means omitting set names vesetting the header.

1 Cevap

Make sure that the files are saved in utf8 encoding, and not something else. This can probably be done through your IDE or text-editor. I.e. in eclipse you can choose Edit->Set Encoding

(Benim tahminim başka bir kodlama ile bu file2.php veya index.php kaydedilir olurdu)