-
March 8th, 2017, 20:46
#11
پاسخ : تغییر فایل به utf-8 در php

نوشته اصلی توسط
Flynic
اگر به شل سرور دسترسی دارید با هر زبانی یا حتی خود بَش میتونید یک حلقه بنویسید که این کار رو انجام بده.
دستورش را هم در پست ۴ نوشتم.
ابتدا همین دستور را برای یک فایل اجرا کنید و ببینید تبدیل درست انجام میشود یا خیر. (البته تصور میکنم به جای windows-1256 باید ANSI باشد).
در مورد ماکرو منظورم رکورد کردن عملیات انجام تغییر انکودینگ در ادیتور بود. برنامههایی هستند که رکورد میکنند و تکرار میکنند.
http://www.mouserecorder.com
ببینید در مورد حلقه و هر چیز دیگه ای ابدا مشکلی نیست . حلقه برای تمامی کارها نوشته شده . همین انکدینگ مورد داره
بنده متوجه شدم مشکل کار iconv چی هست . انکودینگ ورودی رو اشتباه میزدم . انکدینگ رو با mb_detect_encoding میگرفتم و کدینگ رو ascii میداد ولی با ssh و دستور file -i گرفتم utf-16le داد و دستور کامل شد فایل جدید هم utf-8 شد
کد PHP:
$string = file_get_contents($str);
$string = iconv('utf-16le', 'UTF-8', $string);
$fp = fopen('123.srt', 'w+');
fwrite($fp, $string);
fclose($fp);
حالا موضوع اینجاست که چطوری کدینگ فایل مبدا رو بدون ترمینال و صحیح مشاهده کنم ؟
آیا راهی غیر از mbstring هست ؟
-
-
March 8th, 2017 20:46
# ADS
-
March 8th, 2017, 20:52
#12
پاسخ : تغییر فایل به utf-8 در php
دقیقا منظورتون از «بدون ترمینال» رو متوجه نشدم.
اگر منظورتون این هست که چطور ببینید فایل تبدیل شده درست هست، میتونید فایل رو روی سیستم خودتون دانلود کنید و ببینید (با هر چیزی، وب سرور یا sftp).
یا اینکه روی سرور x11 و دسکتاپ نصب کنید و روی همان سرور تست کنید.
چون کاراکترهای فارسی در ترمینال نمایش داده نمیشوند.
- امضاء این کاربر به دَلیل نَقض قَوانین سایت ، توسُطِ مُدیر حَذف شُده است.
- جَهَتِ مُطالِعه قَوانین ، این قِسمت کلیک کُنید.
-
-
March 8th, 2017, 22:01
#13
پاسخ : تغییر فایل به utf-8 در php

نوشته اصلی توسط
Flynic
دقیقا منظورتون از «بدون ترمینال» رو متوجه نشدم.
اگر منظورتون این هست که چطور ببینید فایل تبدیل شده درست هست، میتونید فایل رو روی سیستم خودتون دانلود کنید و ببینید (با هر چیزی، وب سرور یا sftp).
یا اینکه روی سرور x11 و دسکتاپ نصب کنید و روی همان سرور تست کنید.
چون کاراکترهای فارسی در ترمینال نمایش داده نمیشوند.
ببینید منظورم این هست چطوری کدینگ یک فایل رو با php ببینیم ؟
mb_detect_encoding برای اینکار هست ولی متاسفانه دقیق نشون نمیده . مثلا فایلی که utf-16le هست رو ascii نشون میده
-
-
March 8th, 2017, 22:17
#14
پاسخ : تغییر فایل به utf-8 در php

نوشته اصلی توسط
hoka
ببینید منظورم این هست چطوری کدینگ یک فایل رو با php ببینیم ؟
mb_detect_encoding برای اینکار هست ولی متاسفانه دقیق نشون نمیده . مثلا فایلی که utf-16le هست رو ascii نشون میده
راستش تا جایی که اطلاع دارم در php همین تابع کاربرد دارد و جایگزینی نمیشناسم.
راه دیگه این هست که مثلا شما متن فایل جدید و فایل اصلی (فایل سالم و قابل خواندن فارسی) را دارید، بعد length یا hash هر دو فایل رو محاسبه میکنید و تطابق میدهید. (یا قسمتی از متن هر دو فایل رو به ASCII حساب کنید و تطابق بدهید).
اینطور فقط میتونید صحت کار رو تایید کنید نه نوع انکودینگ رو.
- امضاء این کاربر به دَلیل نَقض قَوانین سایت ، توسُطِ مُدیر حَذف شُده است.
- جَهَتِ مُطالِعه قَوانین ، این قِسمت کلیک کُنید.
-
تعداد تشکر ها از Flynic به دلیل پست مفید