رفتن به مطلب

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


Masrour

پست های پیشنهاد شده

سلام. من یه فایل 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
لینک به ارسال

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>

لینک به ارسال

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

لینک به ارسال

مشکل کد شما این هست که شما هدر شناسایی 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);
}
?>

منبع

موفق باشید.

لینک به ارسال

مشکل کد شما این هست که شما هدر شناسایی 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);
}
?>

منبع

موفق باشید.

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

لینک به ارسال

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

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

موفق باشید.

لینک به ارسال

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

موفق باشید.

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

abbas.zip

لینک به ارسال

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

up

لینک به ارسال

دوستان من مشکل در نمایش مقادیر فارسی در فایل 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کردم بازم نشد.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...