html kodlamak çıktı &&

5 Cevap php

benim veri tarayıcı üzerinde çalıştırdığınızda doğru mysql çöp gibi görünüyor ama görüntüler arapça karakterleri içerir. sorular:

  • nasıl ben çıkışını html kodlamak mı?
  • ben bütün dosyaları bu eklerseniz: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ben bu hatayı alıyorum: Error: Incorrect string value: '\xE4\xEE\xC3\xD8\xEF\xE6...' for column 'cQuotes' at row 1

Php / mysql platformu üzerinde çalışıyorum.

html ekleme formu:

<!doctype html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Your Favorite Quotes</title>
<link rel="stylesheet" type="text/css" href="style.css" /> 
<link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
<script src="scripts/jquery.validationEngine-en.js" type="text/javascript"></script> 
<script src="scripts/jquery.validationEngine.js" type="text/javascript"></script>
<script type="text/javascript">
            $(document).ready(function() { 
                $("#submitForm").validationEngine() 
            })  
</script>
</head>
<body>

<div class="container">
<div class="center_div">
<h2>Submit Your Quote</h2>
<fieldset>
<form id="submitForm" action="qinsert.php" method="post">
<div class="field">
<label>Author: </label>
<input id="author" name="author" type="text" class="validate[required,custom[onlyLetter],length[0,100]]">
</div><br />
<div class="field">
<label>Quote: </label>
<textarea id="quote" name="quote" class="validate[required, length[0,1000]]"></textarea>
<br />
</div>
<input id="button1" type="submit" value="Submit" class="submit" /><br />
<input id="button2" type="reset" value="Reset" /> 
</form>
</fieldset>
</div>
</div>


</body>
</html>

/ / / / / / / / / / / / / / / / / / / / / /

php sorgu:

//<?php
//header('Content-Type: text/html; charset=UTF-8');
//?>
<!doctype html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style2.css" /> 
<title>Your Quote Databank</title>
</head>
<body>

<?php
include 'config.php';

echo "Connected <br />";


//check for quotes and apostrophes

$author = '';
$quote = '';

$author = $_POST['author'];
$quote = $_POST['quote'];

$author = mysql_real_escape_string(trim($author)); 
$quote = mysql_real_escape_string(trim($quote)); 


//**************************


//validating data

$query = "SELECT * FROM Quotes where cQuotes = '$quote' limit 1;";

$result = mysql_query($query, $conn);

//now check that the number of rows is 0

if (mysql_num_rows($result) > 0 ) {
header("Location: /error.html");
exit;
}



//inserting data
//mysql_query("SET NAMES 'utf8'");
//mysql_query("SET CHARACTER SET utf8");
$sql="INSERT INTO Quotes (vauthor, cquotes)
VALUES ('$author', '$quote')";

if (!mysql_query($sql,$conn))
  {
  die('Error: ' . mysql_error());
  }
echo "<div class='container'><p><label class='lbl_record'> Record Added Successfully!</label>";
echo "<a href='qform.html'> Submit a New Quote!</a></p>";

//**************************


//selecting data
$result = mysql_query("SELECT * FROM Quotes ORDER BY idQuotes DESC");

echo "<div class='center_div'>";
echo "<table>
<thead>
<tr>
<th>Author</th>
<th>Quotes</th>
</tr>
</thead>";

while($row = mysql_fetch_array($result))
  {
  echo "<tbody><tr>";
  echo "<td width='150px'>" . $row['vAuthor'] . "</td>";
  echo "<td>" . $row['cQuotes'] . "</td>";
  echo "</tr>";
  }
echo "</tbody></table>";
echo "</div></div>";
//**************************

include 'close_config.php';

?>

</body>
</html>

5 Cevap

Incorrect string value: '\xE4\xEE\xC3\xD8\xEF\xE6...'

Bu ISO-8859-6 kodlanmış bir Arapça bir dize gibi görünüyor. Eğer bir ISO-8859-6 Bayt dize almış ve UTF-8 veritabanı tabloya eklemek için çalışıyorsunuz eğer bu hatayı alırsınız.

meta ima gibi form sayfası doğru UTF-8 olarak işaretlenmiş ise script, tarayıcı ISO-8859-6 almamış olmalıdır. Form görüntülendiğinde, Görünüm-> Kodlama menü 'UTF-8' işaretli olduğu tarayıcıda kontrol edin. <meta> Gerçek bir Content-Type: text/html;charset=... başlığını geri geçerek web sunucusu tarafından geçersiz olabilir.

PHP sunucusuna konuşmak yanlış charset kullanmaya çalışıyor, bu da belki olabilirdi. Ben bir SET NAMES ... Ben tercih mysql_set_charset ('utf8'); kullanmak istiyorum üzerinden yorumladı görüyorum.

echo "<td>" . $row['cQuotes'] . "</td>";

Sen çünkü charset sorunları-HTML kodlamak burada çıktı ama gerekir. Herhangi bir < ve & karakter aksi halde size cross-site betik sorunları var bu durumda JavaScript dahil olmak üzere, istenmeyen HTML işaretleme enjekte edebilir metinde kodlama gerekir.

echo '<td>'.htmlspecialchars($row['cQuotes']).'</td>';

Kenara: ... Ancak, PHP çiftleşmiş dildir. Kullanın, kendinize çiftleşmiş dize yapmaya çalışıyor bunu kavga etmiyoruz.

<table>
    <?php while ($row= mysql_fetch_array($result)) { ?>
        <tr>
            <td width="150"><?php h($row['vAuthor']) ?></td>
            <td><?php h($row['cQuotes']) ?></td>
        </tr>
    <?php } ?>
</table>

(width="150px" çalışmaz, px sadece CSS içindir.) Yukarıdaki bu kadar htmlspecialchars yazmak zorunda durdurmak için böyle bir yardımcı işlev üstlenir:

function h($s) {
    echo htmlspecialchars($s, ENT_QUOTES);
}

yok böyle bir şey "karakter" var. encoding sadece vardır. Eğer kullandığınız kodlama belirlemeniz gerekir. Ve sonra uygulamanın tüm üç bölümden için bu kodlama ayarlayabilirsiniz:

  • HTML sayfası
  • PHP komut dosyası
  • veritabanı

UTF-8 is strongly recommended.
To use it, you must set your veritabanı encoding, by creating tables with default charset=utf8, mysql client encoding, by executing SET NAMES utf8 query in your client side application, and by setting header("Content-Type: text/html; charset=utf-8"); for the page that contain html form and for the page with results

According to your edition:
Add this line in your config.php file:

mysql_query("SET NAMES utf8");

Ve ayrıca kodlama mysql tabloları kontrol. Sen show create table Quotes sorgu ile yapabilirsiniz

HTML varlıkları kullanmanız gerekmez. Sen (UTF-8 gibi) Arapça karakterler için uygun olan bir karakter kodlaması almak ve kullanımını tüm ara araçları düzgün kullanmak yapmak gerekir: MySQL, mysql_query (), PHP, HTML ...

Bu deneyin:

while($row = mysql_fetch_array($result))
{
  echo "<tbody><tr>";
  echo "<td width='150px'>" . htmlentities($row['vAuthor']) . "</td>";
  echo "<td>" . htmlentities($row['cQuotes']) . "</td>";
  echo "</tr>";
}

Daha fazla bilgi için bkz: htmlentities function ref

jquery doğrulama kullanırken Arapça için bu deneyebilirsiniz

"onlyLetterSp": {
    "regex": /^[a-zA-Z\u0600-\u06FF\ \']+$/,
    "alertText": "* أحرف فقط"
},