ورود

View Full Version : سوال: ذخیره شدن کاراکترهای فارسی بصوت کد اسکی در mysql



kami_kes2003
چهارشنبه 22 اردیبهشت 1389, 11:02 صبح
ا سلام به همه دوستان و کارشناسان
آقا یه سوال دارم که چند روزیه حسابی اعصاب و روانم رو بهم ریخته

بعد از نصب یک اسکریپت، متوجه شدم که در زمان ارسال یک مقاله، بلاگ و .... با موضوع فارسی و متن فارسی، اطلاعات بصورت یک سری عدد در دیتابیس ذخیره شده و 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
چهارشنبه 22 اردیبهشت 1389, 15:17 عصر
دوست عزیز من خودم زیاد سر در نمیارم ولی من به نظر من این دو تا رو هم امتحان کن.
اول که به این خط توجه کن که من توضیح ندم دیگه.
character set utf8 collate utf8_danish_ci
اینو امتحان کن ببین درست ذخیره میشن یا نه.من خودم دیتابیس های فارسی ام رو اینطوری می سازم و مشکلی هم ندارم.
بعد هم اگر دستی وارد می کنی و توی صفحه علامت سوال میشن فکر کنم که بهتره که نوع کارکتر های صفحه رو مشخص کنی که مرورگر بدونه باید صفحه ات رو چطوری تفسیر کنه.خط زیر رو به تگ head یه صفحه اضافه کن ببین درست میشن یا نه.
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
به هر حال این چیزی بود که من به نظرم اومد و گفتم که بگم شاید کمکت کنه.

kami_kes2003
چهارشنبه 22 اردیبهشت 1389, 17:30 عصر
مورد دوم که گفتی رو قبلا ً امتحان کردم جواب نداد
اما در مورد اولی باید امتحان کنم اما فکر نمیکنم جواب بده، آخه توی این زمینه خیلی چیزها رو امتحان کردم

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

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

parsajax
پنج شنبه 23 اردیبهشت 1389, 10:25 صبح
عزیزم این مشکل برای همه هست یعنی وقتی با PHP کدی رو تو دیتا بیس اینسرت میکنی توسط phpmyadmin علامت سوال و عدد نمایش داده میشه و اگه دستی از طریق phpmyadmin حروف فارسی رو وارد کنی و با php نشون بدی علامت سوال میشه.
برای اینکه مشکلت حل شه نوع دیتابیست رو utf8_general_ci بزار و قبل از اینکه چیزی رو وارد دیتابیس کنی یا بخونی کوئری زیر رو بگیر.



mysql_query("SET NAMES 'utf8'", $link);

البته $link باید با متغیر مربوط به کانکشن دیتابیست تعویض بشه.

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

kami_kes2003
پنج شنبه 23 اردیبهشت 1389, 11:44 صبح
میشه یه مثال برای &link بزنی دوست خوبم
آخه تازه کارم بلد نیستم

parsajax
پنج شنبه 23 اردیبهشت 1389, 22:00 عصر
چرا که نه دوست عزیز




<?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
جمعه 24 اردیبهشت 1389, 01:50 صبح
آقا به خدا خسته شدم
هر روشی که میگید امتحان میکنم جواب نمیده
اینقدر گشتم توی این نت خسته شدم
فکر میکنم این چون اسکریپت جامعه مجازیه و برای زبونهای مختلف ساخته شده، کاراکترهای غیر انگلیسی رو به صورت اسکی ذخیره میکنه

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

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

Keramatifar
سه شنبه 20 مهر 1389, 15:04 عصر
http://barnamenevis.org/forum/showthread.php?t=252211

abdollah110110
دوشنبه 10 آبان 1389, 17:52 عصر
سلام
هر کد php رو که میخوای بنویسی در notpad بنویس و بصورت encoding : utf8 ذخیره کن.

mohammad-gh
دوشنبه 17 آبان 1389, 09:54 صبح
هر کد PHP نه!
فقط متون فارسی رو که از بانک نمی خونی باید در نت پد بنویسی و به صورت utf ذخیره کنی

bestnews
یک شنبه 07 آذر 1389, 12:32 عصر
عزیزم این مشکل برای همه هست یعنی وقتی با PHP کدی رو تو دیتا بیس اینسرت میکنی توسط phpmyadmin علامت سوال و عدد نمایش داده میشه و اگه دستی از طریق phpmyadmin حروف فارسی رو وارد کنی و با php نشون بدی علامت سوال میشه.
برای اینکه مشکلت حل شه نوع دیتابیست رو utf8_general_ci بزار و قبل از اینکه چیزی رو وارد دیتابیس کنی یا بخونی کوئری زیر رو بگیر.



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

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





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

arashebaabaa
پنج شنبه 24 شهریور 1390, 11:38 صبح
http://static.travelblog.org/Wallpaper/pix/waterfall_desktop_background-1600x1200.jpg

milad.biroonvand
پنج شنبه 19 بهمن 1391, 17:07 عصر
احسن دقیقا همین بود .


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



mysql_query("SET NAMES 'utf8'", $link);

البته $link باید با متغیر مربوط به کانکشن دیتابیست تعویض بشه.

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