حل مشکل علامت سوال و بهم ریختگی متن

سلام این مطلب بارها و بار ها مطرح شده من یه نمونه در این مورد مطلب نوشتم ولی کامل نیست و خواستم امروز کاملترش کنم. 

مشکل علامت سوال در قسمت چاپ: 

$servername="localhost";

$dbname="cms2";

$user="root";

$pass="";

$dblink=mysql_connect($servername,$user,$pass);

mysql_select_db($dbname,$dblink);

mysql_query("SET CHARACTER SET  utf8",$dblink);

$dbresult=mysql_query("SELECT * FROM jadval limit 5",$dblink);

باید همیشه این خط آبی قبل از ارسال کوئری باشه اگه بعد از قسمت کوئری 

mysql_query 

نوشته بشه علامت سوال در صفحه چاپ میشه.


مشکل نوشته های بهم ریخته:

اگر این خط رو قبل از ارسال کوئری و insert در قسمت ارسال اطلاعات به mysql قرار ندیم نوشته ها در خروجی به صورت بهم ریخته نشون داده میشه.

$handle=mysql_connect('localhost','root','');

mysql_query("SET CHARACTER SET  utf8",$handle); 

$query = "INSERT INTO jadval SET msg = '$msg',title='$title',date='$date'";

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


روش دیگه:

$Link= mysql_connect($Host,$User,$Password);

//وارد کردن مقادیر به جدول

$Query="INSERT into $Tablname values ('$_POST[sname]','$_POST[sfamily]')"; 

mysql_query('SET NAMES \'utf8\''); 

if (mysql_db_query($Dbname,$Query,$Link)) {

حتما در صفحه ی خود در قسمت <head></head> از کد زیر استفاده کنید:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

در mysql هم Collation دیتابیس ، جدول و فیلدهایی که قراره متن فارسی در آن ها قرار بگیره رو utf8_persian_ci انتخاب کنید.

نظرات 6 + ارسال نظر
هانیه یکشنبه 14 اسفند‌ماه سال 1390 ساعت 06:46 ب.ظ

سلام
من ی وبلاگ درست کردم خیلیم بهش میرسم ولی تو مرورگرها بالا نمیاد
شما ی سورس ندارید بهش بدم اول بالا بیاد

توی چه مرورگری بالا نمیاد؟
باید سورسش رو ببینم.

محمد دوشنبه 28 فروردین‌ماه سال 1391 ساعت 02:28 ق.ظ

سلام. تشکر یه مشکلم حل کردین با این مطلب...

مهمان دوشنبه 15 دی‌ماه سال 1393 ساعت 08:13 ق.ظ

خیلی خیلی خیلی ممنون
من هر دو مشکل رو داشتم که با این کد حل شد

محمد شنبه 4 بهمن‌ماه سال 1393 ساعت 01:26 ب.ظ

ممنون و ممنون

فانوس جمعه 26 خرداد‌ماه سال 1396 ساعت 05:44 ب.ظ

کد من اینه:

<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$servername = "localhost"; $username = "root"; $password = ""; $dbname = "behzisti"; $codemeli = $_POST['codemeli'];
$conn = new mysqli($servername, $username, $password, $dbname) or die("Connection failed: " . $conn->connect_error);
$sql = "SELECT * FROM maloolin where codemeli='".$codemeli."' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$name = $row['name'];
$family = $row['family'];
}
} else { echo "یافت نشد"; } $conn->close(); } ?>


چجوری باید فارسی بشه
همشو امتحان کردم، علامت سوال میشه !
ممنون راهنمایی کنید

یه سرچی تو اینترنت بکنی پیدا میکنی:
https://www.sitepoint.com/community/t/mysql-encoding-problem-cant-change-to-utf-8/38925/3
مگر اینکه وقتی دیتابیس و جدول را میساختی utf8_persian_ci را در قسمت Collation انتخاب نکردی. پس باید این تغییرات را اعمال کنی بعد از اول دوباره اطلاعات را وارد کنی.

پریسا چهارشنبه 14 تیر‌ماه سال 1396 ساعت 10:57 ق.ظ

اقا از من اصلا فارسی نمیشه وقتی خروجی میگیرم علامت سواله
توی phpmyadmin هم فارسی بنویسک علامت سواله

وقتی توی phpmyadmin هم فارسی وارد میکنی علامت سوال هست این یعنی شما Collation دیتابیس و جدول را utf8_persian_ci انتخاب نکردی.

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد