انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: تبدیل از utf-8 به windows-1256  (دفعات بازدید: 883 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین ارباب!

  • Sr. Member
  • *
  • ارسال: 448
  • جنسیت : پسر
تبدیل از utf-8 به windows-1256
« : 27 آذر 1395، 07:16 ب‌ظ »
سلام دوستان!
چه طوری می تونم از utf-8 به windows-1256 تبدیل کنم یه فایل متنی رو..؟
یه فایل ساختم و توش نوشتم "سلام دنیا!":
$ file utf-8.txt
utf-8.txt: UTF-8 Unicode text
اما موقع تبدیل:
$ iconv utf-8.txt -o windows-1256.txt -f utf-8 -t windows-1256
iconv: illegal input sequence at position 13
مشکل چیه..؟
Void Linux + XFCE

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : تبدیل از utf-8 به windows-1256
« پاسخ #1 : 27 آذر 1395، 10:37 ب‌ظ »
داداش شما کافیه به این صورت تایپش کنی :
iconv utf-8.txt -o windows-1256.txt -f utf-8 -t WINDOWS-1256//TRANSLIT
در واقع مشکل از این جا شروع می شه که بعضی از کارکترها توی امکان تبدیل از utf-8 رو به windows-1256.txt ندارن پس ما چند کار می تونیم انجام بدیم :
1.استفاده از دستور //IGNORE :
این دستور در صورت بروز ارور اون خطا رو می پذیره و رد می شه ولی تمام این ها زمانیه که تمامی کارکترهای uft-8 معتبر باشن ولی تو مثال شما ("سلام دنیا!") ظاهرا این مورد صدق نمی کنه (کلا وقتی از چند کلمه ی فارسی تشکیل بشه این دستور نمی تونه کمک حال ما باشه)
2.استفاده از دستور //TRANSLIT :
این دستور کارکترهایی که باعث بروز اشکال می شن (اون هایی که تو اینکود مقصد معتبر نیستن) رو اصطلاحا نویسه گردانی می کنه بهتر بخوام توضیح بدم در واقع اون ها رو در اینکود مقصد شبیه سازی و معادل می کنه یعنی کارکتری شبیه (بهتره بگم هم ارز) اونو تو اینکود مقصد انتخاب می کنه
« آخرین ویرایش: 27 آذر 1395، 10:40 ب‌ظ توسط ali76 »

آفلاین ارباب!

  • Sr. Member
  • *
  • ارسال: 448
  • جنسیت : پسر
پاسخ : تبدیل از utf-8 به windows-1256
« پاسخ #2 : 28 آذر 1395، 12:12 ق‌ظ »
خیلی ممنون..
در مورد این دو option اطلاع نداشتم..
من الان این کارو کردم:
iconv utf-8.txt -o windows-1256.txt -f utf-8 -t windows-1256//TRANSLIT
iconv windows-1256.txt -o output.txt -f windows-1256 -t utf-8
الان output.txt به جای "سلام دنیا!" این هست..:
سلام دن?ا!
پس متوجه شدم مشکل یه ارتباطی با اون ی وسط دنیا داره..
حالا نمی دونم چرا.. ولی یه حدسایی می زنم..
شاید مثلا تو windows-1256 باید از یه ی دیگه ای استفاده کرد و این یکی ی نیس.. آخه مث این که کلی ی داریم..! فک کنم باید از اون ی ای که ۲ تا نقطه پایینشه همیشه استفاده کرد.. چون ظاهرا این ی ما تو عربی نیست و windows-1256 هم مخصوص عربیه..
Void Linux + XFCE

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : تبدیل از utf-8 به windows-1256
« پاسخ #3 : 28 آذر 1395، 12:22 ق‌ظ »
بله حدس شما درسته و اون position 13 هم دقیقا به همون ی اشاره داره
و اما دلیل :
اینکود WINDOWS-1256 مربوط به کارکتر های عربیه و امکان تبدیل بعضی از کارکترهای فارسی رو نداره و به خاطر همون این ارور پیش میاد
و راه حل این داستان اینه که شما وقتی ی می نویسین به جاش SHIFT + "ی" رو فشار بدین تا این کارکتر ظاهر بشه : ي
این طوری مشکل حل می شه ;)
پ.ن:البته درسته که این اینکود به صورت کامل زبان عربی رو ساپورت می کنه ولی صرفا مخصوص این زبان نیست و از کارکترهای انگیلسی و علامت ها تقریبا به طور کامل پشتیبانی می کنه و از کاکترهای فارسی ظاهرا فقط همون ی رو نداره و تو بقیه ی کارکترها عین گ چ پ ژ هیچ مشکلی نداره ولی ی رو فقط به صورت ي پشتیبانی میکنه
« آخرین ویرایش: 28 آذر 1395، 12:31 ق‌ظ توسط ali76 »