PDA

View Full Version : تبدیل از یک کدینگ به کدینگ دیگر



capitan-h
یک شنبه 23 تیر 1392, 10:22 صبح
سلام
من یک فایل txt دارم که نوشته ها مشخص نیست(این فایل خروجی DOS هست)
مثلا یک نم.منه اینجوری :
‎¢م¨ ù“مھ –ھ¤ üَُ ي÷‘“,ûƒ„†پƒ–/ˆ„…پ…©‹–(‚¢÷“)‎¢گ¢¤گ¤ى , , ¤‏ً“ëّىں,–ىّô‘ُ—,17310645, , 81064, , , , , ٌçھ ëں, 4871250, ¢ٍّگù÷‏¥û يُî, 487125, ِî¨ُù÷‏¥
حالا می خوام اینا رو با فرمت درست بریزم تو دیتا بیس و دوباره از دیتا بیس بخونم.
فعلا مشکل اینه که نمیدونم این چه کدینگی هست و با چه کدینگی (احتمالا utf-8) ذخیره کنم که درست نشون بده.
با یک نرم افزار convert کردم فارسی رو درست نشون میده اما هیچ اطلاعاتی نمیده که چه کدینگی رو به چه کدینگی تبدیل کرده.
ممنون اگه راهنمایی کنید

capitan-h
یک شنبه 23 تیر 1392, 11:28 صبح
یک نفر راهنمایی کنه لطفا

capitan-h
سه شنبه 25 تیر 1392, 09:35 صبح
یک نفر نیست کمک کوچکی کنه؟

MMSHFE
سه شنبه 25 تیر 1392, 09:44 صبح
از ترکیب تابع mb_detect_encoding و iconv استفاده کنید. احتمالاً فرمت iran-system باشه که قدیما تو DOS رایج بود.

MMSHFE
سه شنبه 25 تیر 1392, 09:52 صبح
کلاً این لینک رو ببینید بد نیست:
http://www.php.net/manual/en/refs.international.php

capitan-h
سه شنبه 25 تیر 1392, 10:15 صبح
با تشکر از شما
آره iran sytem هست. الان خروجی دارم اما کلمات فارسی از چپ به راست نوشته شده. مثلا اینجوری ج نـ پ که معادل پنج هست.
اعداد درسته اما کلمات اشتباه راه حل چیه؟

MMSHFE
سه شنبه 25 تیر 1392, 10:17 صبح
باید از strrev (http://www.php.net/manual/en/function.strrev.php) استفاده کنید یا اگه درست نتونست برعکس کنه (بخاطر حالتهای مختلف حروف فارسی - اول، وسط، آخر چسبان یا تنها)، یک تابع خودتون بنویسید که حروف رو برعکس بریزه توی رشته جدید و رشته جدید رو برگردونه. ضمناً دکمه تشکر کاربرد قشنگتری داره.

capitan-h
سه شنبه 25 تیر 1392, 10:25 صبح
خوب من بایت به بایت خوندم و با این http://en.wikipedia.org/wiki/Iran_System_encoding_standard کدها که اینجا قرار داره switch case ساختم. حالا می خوام به حروف فارسی که رسید فقط فارسی رو بر عکس کنه و تو همون جا دوباره برگردونه تا به هم نریزه. یکم اگه ممکن هست توضیح بیشتری بدین. خیلی ممون

MMSHFE
سه شنبه 25 تیر 1392, 10:43 صبح
باید با RegEx کلمات فارسی رو استخراج کنید و هر قسمت رو جداگانه برعکس کنید تا درست بشه.

capitan-h
سه شنبه 25 تیر 1392, 10:47 صبح
خیلی ممنون
اما خیلی سر بسته راهنمایی میکند. این RegEx تو php.net این طوری دیگه: RegexIterator
لطفا یک مقدار بیشتر راهنمایی کنید. ممنون

MMSHFE
سه شنبه 25 تیر 1392, 10:51 صبح
نه باید با توابع preg_match و preg_match_all و امثال اون کار کنید. اینکه سربسته میگم بخاطر اینه که میبینم خودتون با گرفتن سرنخ، تا تهش جلو میرین. قصدم اینه که ماهیگیری یاد بگیرین نه اینکه بهتون ماهی تحویل بدم.

capitan-h
سه شنبه 25 تیر 1392, 11:30 صبح
ممنون پس من باید فعلا با این چند تا کار کنم؟ preg_match و preg_match_all و strrev این یکی لازم نیست استفاده بشه؟ explode مشکل من اینه که کلا کلمات رو برعکس می کنم درست میشه فارسی اما کلا نظم به هم میریزه و اعداد هم بر عکس میشه که نمی خام این اتفاق بیفته

MMSHFE
سه شنبه 25 تیر 1392, 12:05 عصر
بله. البته همونطور که خودتون هم اشاره کردین، با explode هم میشه کلمات رو جدا کرد و جداگانه روشون کار کنید ولی preg_match_all هم یکجا میتونه کلمات فارسی رو استخراج کنه و در اختیارتون بگذاره.

capitan-h
چهارشنبه 26 تیر 1392, 16:49 عصر
من می خوام داده ها که داخل یک فایل text قرار گرفته رو تو mysql اضافه کنم. داده ها داخل فایل text اینجوریکه با , از هم جدا میشن در نتیجه با دستور LOAD DATA INFILE میخوام هر داده که بین , هست بریزم تو یک فیلد.
مشکل انجا هست که فایل text بخوام اینجوری import کنم نیاز به 128 فیلد دارم.!! حالا راهنمایی کنید که چطوری بریزم تو mysql وچوری این تعداد فیلد رو ایجاد کنم. همه فیلد ها غیر از اولی و دومی کاراکتر فارسی و بعضی از اونها عدد و کاراکتر فارسی هست. لطفا راهنمایی کنید. باید بشینم 128 فیلد درست کنم؟؟؟ برای که فارسی درست باشه mysql چه کار کنم که تو فارسی گیر نکنه؟؟ ممنون