PDA

View Full Version : سوال: تبدیل uft8 به windows1251



mononoor
شنبه 06 اردیبهشت 1399, 18:18 عصر
با سلام. یک دیتا بیس است که می خواهم از اون اطلاعات استخراج کنم. ولی مشکل اینجاست که کارکترهای فارسی توی جدول یه صورت مجلس ذخیره شده است. و وقتی که هم فراخوانی می کنم به همین صورت نمایش داده می شود. توی اینترنت سرچ زدم با ابزار انلاین utf8 به windows1251 به فارسی تبدیل شد. حالا یه کانورتور می خوام که این کار را در php برای من انجام بدهد
یعنی مجلس که توی دیتابیس ذخیره شده است را به معادل فارسی اون که ( مجلس ) است تبدیل کند. در ضمن تنظیمات دیتابیس اولیه را نمی خواهم تغییر بدهم. یا یک دیتا بیس جدید و یا خروجی php.
در ضمن از کد زیر هم استفاده کردم ولی جواب نداد. کارکترهایی به صورت �� �� نشان داده می شود


iconv("UTF-8", "CP1251//IGNORE", $row["family"]);


ممنون می شوم که راهنمایی کنید

plague
یک شنبه 07 اردیبهشت 1399, 17:01 عصر
من مطمئن نیستم این جواب بده چون اونیک ه دیتابیس رو پر کرده احتمالا قدیمی یا آماتور بوده و چیزی نیست که من بهش برخورده باشم
ولی کانکشنی که میسازی تو php به دیتابیس رو utf8 نکن (معمولا برای دیتابیس های فارسی وقتی کانکشن رو میسازن کاراکتر ست رو روی utf8 میزارن شما اینکار رو نکن )
بعد از دیتابیس بخون و نمایش بده


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

ولی نمونه mysqli رو میتونی اینجا ببینی


https://www.w3schools.com/php/func_mysqli_set_charset.asp


اون قسمت


// Change character set to utf8
$mysqli -> set_charset("utf8");

یا


//
Change character set to utf8
mysqli_set_charset($con,"utf8");


رو انجام نده

mononoor
یک شنبه 07 اردیبهشت 1399, 21:10 عصر
سلام. ممنون درست شد. دقیقا مشکل از همینجا بود. توی بک آپی که گرفته بودم از سرور و روی سیستم خودم ایمورت کرده بودم درست جواب میداد. ولی وقتی بردم روی سرور این مشکل پیش آمده بود که با تغییر این قسمت مشکل هم روی سرور حل شد. باز هم ممنون از شما

plague
دوشنبه 08 اردیبهشت 1399, 00:50 صبح
شما باید همون اول که تو دیتابیس میریختید داده ها رو کانکشن رو utf8 میزاشتید (علاوه بر خود دیتبایس که اونم باید یکی از ورژن های utf8 باشه )
وگرنه کلمات فارسی بد ذخیره میشه تو دیتبایس یعنی همینجوری که برای شما ذخیره شدن

الان برای اینکه با php میخونی درست ببینیشون مجبوری کانکشن رو از حالت utf8 در بیاری
به طور خلاصه موقع ذخیره کردن و موقع خوندن از دیتبایس باید charset کانکشن یکسان باشه