# پایگاه‌های داده > سایر پایگاه‌های داده > MySQL >  مشکل ذخیره فارسی اطلاعات

## alux

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

دوستان من انجمن قسمت MYSQL  گشتم ولی چیز خاصی پیدا نکردم

من تو یه صفحه HTML   یه چند تا فرم دارم که نام و نام خوانوادگی افراد رو می گیره و اونا رو تو یه صفحه Php  تو دیتا بیس ذخیره میکنه

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

اطلاعات در دیتا بیس به صورت فارسی ذخیره میشه و قاراش میش مثل این
| &#217;
&#216;µ&#216;·&#217;&#217;   | &#216;µ&#216;§&#217;

از این دستوری که تو یه ترد بود هم استفاده کردم تاثیری نداشت

 ALTER DATABASE `alux` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

در ضمن من اطلاعات دیتا بیس  رو با دستور Select  میبینم دسترسی رووت دارم

سیستم عامل  redhat enterprise

راستی یادم رفت اینو هم بگم که انکودینگ صفحه هم به utf-8  ست شده

ممنون از شما منتظرم

----------


## oxygenws

> اطلاعات در دیتا بیس به صورت فارسی ذخیره میشه و قاراش میش مثل این


اگر کجا فهمیدی قاراش میشه؟؟ لابد با phpMyAdmin!!!!!!!

----------


## alux

گفتم که دسترسی رووت دارم

در حالت کنسول به Mysql  وارد میشم و با select  دیتا ها رو می بینم

----------


## oxygenws

با web interface ای که خودتون نوشتید کار کنید.

----------


## alux

> با web interface ای که خودتون نوشتید کار کنید.



یعنی اصلا کار نداشته باشم چطوری ذخیره میشه؟

با همون دستورات php  باز یابی کنم؟

----------


## reza_rad

> یعنی اصلا کار نداشته باشم چطوری ذخیره میشه؟
> 
> با همون دستورات php باز یابی کنم؟


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

----------


## miladclik

سلام.
من همین مشکل رو دارم اما وقتی می خوام بازیابی کنم اصلا چیزی رو واسم نمی یاره.
اگه ممکن یه راهنمایی کنید.

----------


## peyman1987

سلام
من هم این مشکل رو داشتم ولی به قول معروف یه کلک رشتی زدم. قبل از ذخیره سازی متن رو با URLENCODE انکود میکنم و موقه خواندن هم با URLDECODE دیکودش میکنم.
مثال :

کلمه اصلی : "کلمه فارسی"
کلمه انکود شده که در دیتابیس ذخیره شده:‌ 
" %DA%A9%D9%84%D9%85%D9%87+%D9%81%D8%A7%D8%B1%D8%B3%  D9%8A"

کلمه دیکود شده : "کلمه فارسی"

----------


## miladclik

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

----------


## sma_mohseni

میتونید این کار رو بکنید
در پی اچ پی مای ادمین ، Collation مربوط به Database , جدولهایتان را utf8 کنید و در سورستان نیز این تغییرات را بدهید

$connect = mysql_connect("localhost","root","");
mysql_select_db('dbName');
mysql_query("SET CHARACTER SET utf8", $connect);
mysql_query("SET NAMES 'utf8'", $connect);

البته لازم به ذکر است که کلیه اطلاعاتی را که قبلا وارد کرده اید را باید تبدیل به Utf8 کنید.

----------


## peyman1987

مثال برای انکود کردن :


MYSQL_QUERY("INSERT INTO table VALUES('1','".URLENCODE("سلام")."')");

----------


## kavehmb

> مثال برای انکود کردن :
> 
> 
> MYSQL_QUERY("INSERT INTO table VALUES('1','".URLENCODE("سلام")."')");


اینی که شما نوشتید همون طوری که از اسمش پیداست URL را Encode میکند!
کاربرد اصلیش اینه که اگر با GET اطلاعاتی را به سرور بفرستی که توش یک علامت غیر مجاز باشه سیستم به هم نریزه!
مثال :
index.php?op=add&data=kaveh & mirzaei
کار نمیکنه
که با urlencode به kaveh%20(&)%20
(به جای & یک چیزی میزاره که یادم نیست!) :خجالت:

----------


## sabzmoh

برای select  کردن URLENCODE و نمایشش روی یک صفحه asp 
insert باید چگونه باشد. تشکر

----------


## peyman1987

> اینی که شما نوشتید همون طوری که از اسمش پیداست URL را Encode میکند!
> کاربرد اصلیش اینه که اگر با GET اطلاعاتی را به سرور بفرستی که توش یک علامت غیر مجاز باشه سیستم به هم نریزه!
> مثال :
> index.php?op=add&data=kaveh & mirzaei
> کار نمیکنه
> که با urlencode به kaveh%20(&)%20
> (به جای & یک چیزی میزاره که یادم نیست!)


بله شما درست میگین این تابع مخصوص انکود کردن آدرسهاست ولی من هم گفتم که به قول معروف یه کلک رشتیه. در ضمن برای کلمات انگلیسی شاید زیاد تغییری ایجاد نکنه همونطور که خود شما گفتین ولی کاراکترهای فارسی رو بصورت کد در میاره و این برای بهم نریختن کلمات فارسی فوق العاده خوبه. برای مثال به این سایت مراجعه کنین. این سایت از همین تکنیک استفاده میکنه.
www.shora-b.com

----------

