Masrour

مشکل با کاراکترهای فارسی ذخیره شده در فایل txt در هاست

10 پست در این موضوع قرار دارد

سلام. من یه فایل txt دارم در هاست که در یک فیلد اسم و ایمیل و پیام رو میفرستم از طریف form

ولی وقتی فارسی فرم پر بشه در فایل تکست به صورت زیر نوشه میشه:

در ضمن من فایل jdf.php رو اینکلود کردم در بالای صفحه به ضورت زیر و در فرم در یک اینپوت مخفی ارسال میکنم:

چجوری کاراکتر هارو به صورت فارسی صحیح در فایل متنی دخیره کنیم؟


<?php
include ('jdf.php');
$day_number = jdate('j');
$month_number = jdate('n');
$year_number = jdate('y');
$day_name = jdate('l');
?>

این فرم منه:


<form name="MyForm" action="save-email.php" method="post" onsubmit="xmlhttpPost('save-email.php', 'MyForm', 'MyResult', '<img src=\'pleasewait.gif\'>'); return false;">
<div id="subscribe">
<input type="text" name="yourname" placeholder="نام و نام خانوادگی" id="in1"><br />
<input type="text" name="email" placeholder="آدرس ایمیل" id="in3" required//><br />
<input type="text" name="message" placeholder="پیام شما" id="in4" size="50" ><br />
<input type="hidden" name="date" id="in5" value="<?php echo "$day_name-$day_number-$month_number-$year_number";?>">

</div>
<div class="submit">
<input type="submit" onclick="showresult()" id="sub1" value="به من اطلاع بده" /><br /><br />
<div id="MyResult"></div>
</div>
</form>

اینم کدهای فایل save-email.php


<?php
// write user data to file
$name = $_POST["yourname"];
$email = $_POST["email"];
$message = $_POST["message"];
$date = $_POST["date"];
$ip = $_SERVER['REMOTE_ADDR'];
$ref = $_SERVER['HTTP_REFERER'];
$dtime = date('r');
$entry_line = " Date: " . $date . "\r\n IP: " . $ip . "\r\n Name: " . $name . "\r\n Email: " . $email . "\r\n Message: " . $message . "\r\n==============================\r\n";

$fp = fopen("logs.txt", "a+");
fputs($fp, $entry_line);
fclose($fp);

$response = "اطلاعات شما ثبت شد، به شما اطلاع خواهیم داد." . "<br>";
echo $response;
?>

اینم فایل تکست که تاریخ و فارسینوشته شده ها به صورت زیر هستن

1o0opuguhk388giy0ujb.jpg

ویرایش شده در توسط Masrour
0

به اشتراک گذاری این پست


لینک به پست

encoding رو UTF8 بزنید

3

به اشتراک گذاری این پست


لینک به پست

encoding رو UTF8 بزنید

این تگ head منه:

کجاش مشکل داره؟


<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>MyWebsite</title>
<link type="text/css" rel="stylesheet" href="assets/css/visual.css" media="screen" />
<script src="ajaxsbmt.js" type="text/javascript"></script>
</head>

0

به اشتراک گذاری این پست


لینک به پست

شما گفتی یه پرونده (فایل) txt داری. واسه همین گفتم اون پوشه رو باید utf8 بزنی. head بخشی از کد پوسته به شمار میاد . این ربطی به اون نداره

0

به اشتراک گذاری این پست


لینک به پست

مشکل کد شما این هست که شما هدر شناسایی BOM رو اضافه نکردید، چون فایل‌استریم PHP باینری‌سیف نیست، برای ذخیره صحیح کاراکترهای یونیکد، هدر BOM رو اضافه کنید.

شما می‌تونید به جای fopen و fwrite از فانکشن زیر استفاده کنید.


<?php
function writeStringToFile($file, $string){
$f=fopen($file, "wb");
$file="\xEF\xBB\xBF".$file; // this is what makes the magic
fputs($f, $string);
fclose($f);
}
?>

منبع

موفق باشید.

2

به اشتراک گذاری این پست


لینک به پست

مشکل کد شما این هست که شما هدر شناسایی BOM رو اضافه نکردید، چون فایل‌استریم PHP باینری‌سیف نیست، برای ذخیره صحیح کاراکترهای یونیکد، هدر BOM رو اضافه کنید.

شما می‌تونید به جای fopen و fwrite از فانکشن زیر استفاده کنید.


<?php
function writeStringToFile($file, $string){
$f=fopen($file, "wb");
$file="\xEF\xBB\xBF".$file; // this is what makes the magic
fputs($f, $string);
fclose($f);
}
?>

منبع

موفق باشید.

این به کدوم قسمت اضافه میشه؟

0

به اشتراک گذاری این پست


لینک به پست

این به کدوم قسمت اضافه میشه؟

این رو بالای کدتون اضافه کنید (البته <?php و ؟> رو حذف کنید و بعد به جای استفاده از fopen و fputs از این تابع استفاده کنید.

موفق باشید.

1

به اشتراک گذاری این پست


لینک به پست

این رو بالای کدتون اضافه کنید (البته <?php و ؟> رو حذف کنید و بعد به جای استفاده از fopen و fputs از این تابع استفاده کنید.

موفق باشید.

من نتونستم درست کنم من فایلهامو پیوست کردم لطفا یه نگاه بهش بندازید ببینید که در فایل index تگ فرم که مقادیر ارسال میشه مشکلی نداره؟ و اون فایل save-email کدهاشو نگاه کنید و این کدهایی که گفتید رو بزارید. ممنون.

abbas.zip

0

به اشتراک گذاری این پست


لینک به پست

من نتونستم درست کنم من فایلهامو پیوست کردم لطفا یه نگاه بهش بندازید ببینید که در فایل index تگ فرم که مقادیر ارسال میشه مشکلی نداره؟ و اون فایل save-email کدهاشو نگاه کنید و این کدهایی که گفتید رو بزارید. ممنون.

up

0

به اشتراک گذاری این پست


لینک به پست

دوستان من مشکل در نمایش مقادیر فارسی در فایل txt دارم. عکس زیر رو ببینید:

1o0opuguhk388giy0ujb.jpg

این محتویات فایل index هست:


<?php
include ('counter.php');
include ('jdf.php');
$day_number = jdate('j');
$month_number = jdate('n');
$year_number = jdate('y');
$day_name = jdate('l');
?>
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Website</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<link type="text/css" rel="stylesheet" href="assets/css/visual.css" media="screen" />
<script src="ajaxsbmt.js" type="text/javascript"></script>
</head>
<body>
<!-- Progress bar -->
<div id="progressbar" data-perc="45">
<div class="bar"></div>
<div class="label"><span></span></div>
</div>
<!-- Wrap this content into a container that sets a default width. Progress is outside of this because it's width is 100%. -->
<div id="container">
<!-- Logo text -->
<section id="logo">
<h1>طراحی و توسعه وب</h1>
</section>
<!-- Description text -->
<section id="tagline">
<p>در حال انجام تغییرات هستیم. بزودی باز میگردیم!</p>
</section>

<!-- Subscription form -->
<div id="form-sefaresh" class="main">
<form name="MyForm" action="save-email.php" method="post" onsubmit="xmlhttpPost('save-email.php', 'MyForm', 'MyResult', '<img src=\'pleasewait.gif\'>'); return false;">
<div id="subscribe">
<input type="text" name="yourname" placeholder="نام و نام خانوادگی" id="in1"><br />
<input type="text" name="email" placeholder="آدرس ایمیل" id="in3" required//><br />
<input type="text" name="message" placeholder="پیام شما" id="in4" size="50" ><br />
<input type="hidden" name="date" id="in5" value="<?php echo "$day_name-$day_number-$month_number-$year_number";?>">

</div>
<div class="submit">
<input type="submit" onclick="showresult()" id="sub1" value="به من اطلاع بده" /><br /><br />
<div id="MyResult"></div>
</div>
</form>

</div>

<!-- Copyright message -->
<footer id="footer">Copyright © <?=date('Y')?> - All right reserved <div style="color:#fff;"></div>کلیه حقوق مادی و معنوی برای وب سایت محفوظ می باشد</footer>
</div>
</body>
</html>

این هم فایل save-email هست:


<?php
// write user data to file
$name = $_POST["yourname"];
$email = $_POST["email"];
$message = $_POST["message"];
$date = $_POST["date"];
$ip = $_SERVER['REMOTE_ADDR'];
$ref = $_SERVER['HTTP_REFERER'];
$entry_line = " Date: " . $date . "\r\n IP: " . $ip . "\r\n Name: " . $name . "\r\n Email: " . $email . "\r\n Message: " . $message . "\r\n==============================\r\n";

$fp = fopen("logs.txt", "a+");
fputs($fp, $entry_line);
fclose($fp);

$response = "اطلاعات شما ثبت شد، به شما اطلاع خواهیم داد." . "<br>";
echo $response;
?>

مشکل از کجاست؟

فایل های php رو در برنامه notepad++ باز کردم . utf8کردم بازم نشد.

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری