# پایگاه‌های داده > سایر پایگاه‌های داده > MySQL > سوال: ذخیره شدن کاراکترهای فارسی بصوت کد اسکی در mysql

## kami_kes2003

ا سلام به همه دوستان و کارشناسان
آقا یه سوال دارم که چند روزیه حسابی اعصاب و روانم رو بهم ریخته

بعد از نصب یک اسکریپت، متوجه شدم که در زمان ارسال یک مقاله، بلاگ و .... با موضوع فارسی و متن فارسی، اطلاعات بصورت یک سری عدد در دیتابیس ذخیره شده و url صفحه مورد نظر هم به صورت همون اعداد با خط فاصله تبدیل میشن و این باعث میشه که حجم خیلی بالایی از بانک اطلاعاتی تلف بشه
همه نوع charset و collation رو هم امتحان کردم
از utf8 , persian, general 
اما نتیجه ای حاصل نشد
ضمنا وقتی بصورت دستی اطلاعات رو در بانک اطلاعاتی بصورت فارسی درمیارم، توی صفحات به شکل علامت سوال در میان

بعد از اینکه متوجه شدم که این مشکل هست بانک اطلاعاتی رو export کردم
بعد با ویرایشگر latin1 ها رو به upt8 تغییر دادم و دوباره import کردم
mysql connection collaboration روی utf8_general_ci تنظیم شده
اما واقعا موندم چیکار کنم
کلی زخمت کشیدم اما.
من از phpfox 2.0.4 استفاده کردم

آقا تو رو خدا کمکککککککککککککککککککککک
میگم تابعی چیزی وجود نداره که احتمالاً کاراکترهای غیرانگلیسی رو به این وضعیت در بیاره

خیلی عجیب غربیه 
خستم کرده به خدا

ببین مثلا من یک وبلاگ ایجاد کردم با تیتر آزمایشی تست
توی بانک اطلاعاتی بصورت زیر ذخیره شده:
آزمایشی تست
url مربوط به اون صفحه هم به شکل زیر در اومده (که توی خود بانک اطلاعاتی هم به همین شکل ذخیره میشه):
/blog/1570-1586-1605-1575-1740-1588-1740-1578-1587-1578/
حتی وقتی برای وبلاگ تگ وارد میکنم، وقتی روی تگ کلیک میکنم، توی صفحه نتایج می نویسه:
نتایج برای 1570-1586-1605-1575-1740-1588-1740-1578-1587-1578

راستی وقتی که مثلا توی بانک اطلاعاتی خودم بصورت دستی فارسی وارد میکنم، توی صفحه و آدرس url تبدیل به ?????? میشه
MySQL connection collation: utf8_general_ci
راستی یه چیزی، دیتابیس من 195 جدول داره که collation همشون utf_general_ci هست 


این اتفاق برای تمامی کلمات و کاراکترهای غیرانگلیسی میافته، فکر کنم اگه اینجوری باشه کلی فضای الکی از بانک اطلاعاتی اشغال کنه
متن تمام نوشته ها، بلاگها، تبلیغات، تک تک ترجمه ها به فارسی و ....... همه همینجورین

چند بار هم دیتابیس رو export کردم، collation رو تغییر دادم دوباره import کردم ، اما نشد، حالا نمیدونم شاید هم من یه اشتباهی این کارو میکنم، آخه زیاد وارد نیستم.
خدا خیرتون بدههههههههههههه کمککککککککککککککککککککککک ککککککککککککککک

----------


## ali zi zeperto

دوست عزیز من خودم زیاد سر در نمیارم ولی من به نظر من این دو تا رو هم امتحان کن.
اول که به این خط توجه کن که من توضیح ندم دیگه.
character set utf8 collate utf8_danish_ci
اینو امتحان کن ببین درست ذخیره میشن یا نه.من خودم دیتابیس های فارسی ام رو اینطوری می سازم و مشکلی هم ندارم.
بعد هم اگر دستی وارد می کنی و توی صفحه علامت سوال میشن فکر کنم که بهتره که نوع کارکتر های صفحه رو مشخص کنی که مرورگر بدونه باید صفحه ات رو چطوری تفسیر کنه.خط زیر رو به تگ head  یه صفحه اضافه کن ببین درست میشن یا نه.
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
به هر حال این چیزی بود که من به نظرم اومد و گفتم که بگم شاید کمکت کنه.

----------


## kami_kes2003

مورد دوم که گفتی رو قبلا ً امتحان کردم جواب نداد
اما در مورد اولی باید امتحان کنم اما فکر نمیکنم جواب بده، آخه توی این زمینه خیلی چیزها رو امتحان کردم

من احساس میکنم تابعی چیزی وجود داره که میاد حروف و کاراکترهای غیرانگلیسی رو تبدیل به کد اسکی میکنه

باز هم تشکر دوست خوبم بابت توجهت

----------


## parsajax

عزیزم این مشکل برای همه هست یعنی وقتی با PHP کدی رو تو دیتا بیس اینسرت میکنی توسط phpmyadmin علامت سوال و عدد نمایش داده میشه و اگه دستی از طریق phpmyadmin حروف فارسی رو وارد کنی و با php نشون بدی علامت سوال میشه.
برای اینکه مشکلت حل شه نوع دیتابیست رو utf8_general_ci بزار و قبل از اینکه چیزی رو وارد دیتابیس کنی یا بخونی کوئری زیر رو بگیر.

mysql_query("SET NAMES 'utf8'", $link);
البته $link باید با متغیر مربوط به کانکشن دیتابیست تعویض بشه.

فکر کنم این راه حل توی mysql 5 به بالا جواب بده حالا بازم مطمئن نیستم

----------


## kami_kes2003

میشه یه مثال برای &link بزنی دوست خوبم
آخه تازه کارم بلد نیستم

----------


## parsajax

چرا که نه دوست عزیز


  <?php
 $link = mysql_connect ("localhost",  "username", "password")
      or die(sendError('Could not connect to DB'));
  mysql_select_db ("dbName");
  //
  // Set character set to UTF-8
  //
  mysql_query("SET CHARACTER SET 'utf8'", $link);
?>

----------


## kami_kes2003

آقا به خدا خسته شدم
هر روشی که میگید امتحان میکنم جواب نمیده
اینقدر گشتم توی این نت خسته شدم
فکر میکنم این چون اسکریپت جامعه مجازیه و برای زبونهای مختلف ساخته شده، کاراکترهای غیر انگلیسی رو به صورت اسکی ذخیره میکنه

آقایون کمکککککککککککککککککککک
اگه هزینه ای هم داره تقبل میکنم فقط کمککککککککککککککککککککککک  کککککککک

----------


## mabehfar1

سلام به همه 
نمی دونم تا حالا مشکلت حل شده یا نه . من راه حل رو برای همه نوشتم.
من هم مشکل شما رو داشتم یعنی وقتی یکسری اطلاعات فارسی رو از php وارد mysql می کردم به صورت اسکی ذخیره می شد . هرچی تو اینترنت جستجو کردم نتیجه نگرفتم تا اینکه خدا خواست و خودم حلش کردم . 
ایتدا پروژه رو توی نوت پد notepad باز کنید بعد گزینه save as رو بزنید  وقتی از شما نام پروژه رو می خواد گزینه encoding رو روی utf-8  تنظیم کنید و پروژه رو ذخیره کنید حالا آپلودش کنید و حالشو ببرید :تشویق: 
مخلص شما محمد علی بهفر

----------


## Keramatifar

https://barnamenevis.org/showthread.php?t=252211

----------


## abdollah110110

سلام
هر کد php رو که میخوای بنویسی در notpad بنویس و بصورت encoding : utf8 ذخیره کن.

----------


## mohammad-gh

هر کد PHP نه!
فقط متون فارسی رو که از بانک نمی خونی باید در نت پد بنویسی و به صورت utf ذخیره کنی

----------


## bestnews

> عزیزم این مشکل برای همه هست یعنی وقتی با PHP کدی رو تو دیتا بیس اینسرت میکنی توسط phpmyadmin علامت سوال و عدد نمایش داده میشه و اگه دستی از طریق phpmyadmin حروف فارسی رو وارد کنی و با php نشون بدی علامت سوال میشه.
> برای اینکه مشکلت حل شه نوع دیتابیست رو utf8_general_ci بزار و قبل از اینکه چیزی رو وارد دیتابیس کنی یا بخونی کوئری زیر رو بگیر.
> 
> mysql_query("SET NAMES 'utf8'", $link);البته $link باید با متغیر مربوط به کانکشن دیتابیست تعویض بشه.
> 
> فکر کنم این راه حل توی mysql 5 به بالا جواب بده حالا بازم مطمئن نیستم



خیلی ممنون مشکل من حل شد.
کسانی که وقتی اطلاعات فارسی وارد میکنن، کاراکتر های نا مفهوم ثبت میکنه (اما دستی درسته) اگه یونیکد جنرال رو روی خانه های جدول ست کردین این راه رو من رفتم کار کرد.

----------


## arashebaabaa



----------


## milad.biroonvand

احسن دقیقا همین بود .




> عزیزم این مشکل برای همه هست یعنی وقتی با PHP کدی رو تو دیتا بیس اینسرت میکنی توسط phpmyadmin علامت سوال و عدد نمایش داده میشه و اگه دستی از طریق phpmyadmin حروف فارسی رو وارد کنی و با php نشون بدی علامت سوال میشه.
> برای اینکه مشکلت حل شه نوع دیتابیست رو utf8_general_ci بزار و قبل از اینکه چیزی رو وارد دیتابیس کنی یا بخونی کوئری زیر رو بگیر.
> 
> mysql_query("SET NAMES 'utf8'", $link);
> البته $link باید با متغیر مربوط به کانکشن دیتابیست تعویض بشه.
> 
> فکر کنم این راه حل توی mysql 5 به بالا جواب بده حالا بازم مطمئن نیستم

----------

