نمایش مشکل دار نوشته های فارسی در فایل html

icefall

Member
سلام به همه دوستان
من یه سری فایل word دارم که ازشون save as گرفتم و در فرمت html ذخیرشون کردم. فونت نوشته ها b nazanin هستش. زمانی که فایل های html رو با مرورگرم باز می کنم، بعضی اعداد فارسی و برخی دیگر انگلیسی نمایش داده میشن. اما اگه فونت رو از b nazanin به مثلاً tahoma تغییر بدم این مشکل وجود نخواهد داشت و تمامی اعداد فارسی نشون داده میشن.
من نمی خوام زیبایی فونت رو فدای این قضیه کنم. چطور می تونم فونت رو b nazanin داشته باشم و مشکل چپه چوپه شدن نوشته ها رو نداشته باشم.
مرسی از شما راهنمای محترم.:rose:
 

the_king

مدیرکل انجمن
سلام به همه دوستان
من یه سری فایل word دارم که ازشون save as گرفتم و در فرمت html ذخیرشون کردم. فونت نوشته ها b nazanin هستش. زمانی که فایل های html رو با مرورگرم باز می کنم، بعضی اعداد فارسی و برخی دیگر انگلیسی نمایش داده میشن. اما اگه فونت رو از b nazanin به مثلاً tahoma تغییر بدم این مشکل وجود نخواهد داشت و تمامی اعداد فارسی نشون داده میشن.
من نمی خوام زیبایی فونت رو فدای این قضیه کنم. چطور می تونم فونت رو b nazanin داشته باشم و مشکل چپه چوپه شدن نوشته ها رو نداشته باشم.
مرسی از شما راهنمای محترم.:rose:


به فایل word اصلی دسترسی دارید؟ می توانید با Find and Replace موجود در Microsoft Word در یک مرحله تمامی
ارقام رو به فونت B Nazanin و Right To Left تبدیل کنید تا دیگه ارقام انگلیسی ای وجود نداشته باشد.

در Microsoft Word ترکیب کلیدی کلید Ctrl + کلید H رو فشار دهید تا پنجره Find and Replace باز بشه.
دکمه << More را فشار دهید تا همه دکمه ها قابل مشاهده باشند.
در بخش Replace در مقابل عبارت Find What مقدار #^ رو بنویسید، #^ یک نشانه خاص برای ارقام است، یعنی
می تواند هر کاراکتری بین 0 الی 9 باشد.
بعد بروید سراغ Replace With ، مقابل اش مقدار &^r^ رو بنویسید. r^ کد RTL رو درج می کند تا نوشته بعدی
راست به چپ درج گردد. &^ همان رقمی است که پیدا کردید که با اضافه این کد عینا درج می شود.
اگر بعد از تبدیل به html با r^ به مشکل برخوردید حذف اش کنید.

حالا در حالتی که چشمکزن Cursor روی Replace With قرار دارد، روی دکمه Format کلیک کنید و در بخش ...Font
فونت B Nazanin را برای Complex Scripts انتخاب کنید.

xlpdmb5t2rjow2maljl8.gif


حالا دکمه Replace All را فشار دهید.
 

icefall

Member
ممنون دوست عزیز
تمام مراحل رو انجام دادم اما با یه مشکل مواجه شدم. اینکه اعداد برعکس شدند. مثلا عدد 1389 تبریل شد به 9831.
همونطور که گفتید با حذف کد r^ این مشکل هم حل شد.
بسیار ممنون.
 

icefall

Member
سلام
یه سوال که به همین پست مربوطه. شما کدی رو که اعداد انگلیسی رو به فارسی تبدیل می کنه یادم دادید.
میشه لطفا بفرمایید چطور میشه اعداد فارسی رو انگلیسی کرد؟
مرسی خیلی.
 

the_king

مدیرکل انجمن
سلام
یه سوال که به همین پست مربوطه. شما کدی رو که اعداد انگلیسی رو به فارسی تبدیل می کنه یادم دادید.
میشه لطفا بفرمایید چطور میشه اعداد فارسی رو انگلیسی کرد؟
مرسی خیلی.

اون کدی که باعث فارسی شدن کاراکتر می شد، RTL ای بود که قبلش قرار می گرفت، اگه بجای RTL که با r^
مشخص می شد از کد LRT که با h^ مشخص میشه استفاده کنید، نوشته ها انگلیسی می شوند،
یعنی در مثال قبلی بجای &^r^ از &^h^ استفاده کنید.
 

icefall

Member
سلام دوست عزیز
بسیار ممنونم از راهنمایی تون
یه مسئله گنگ برام باقی مونده. شما در اولین یادداشتی که اینجا گذاشتین، عنوان کردین: اگه به فایل word دسترسی دارین ازreplace استفاده کنید.
داشتن فایل word چه لزومی داره وقتی میشه فایل html رو با ورد باز و ادیت کرد؟

و یه مشکل جدید:

زمانی که از کد برای تبدیل اعداد از فارسی به اینگیلیش استفاده می کنم، یک سری از اعداد همچنان فارسی باقی می مونن و عده ای اصلاح پذیرن. لطفا به فایل پیوست شده ام نگاهی بندازین و کمکم کنین.
خیلی مرسی دارم از شما.
 

پیوست ها

  • 1.rar
    4.9 کیلوبایت · بازدیدها: 1

the_king

مدیرکل انجمن
سلام دوست عزیز
بسیار ممنونم از راهنمایی تون
یه مسئله گنگ برام باقی مونده. شما در اولین یادداشتی که اینجا گذاشتین، عنوان کردین: اگه به فایل word دسترسی دارین ازreplace استفاده کنید.
داشتن فایل word چه لزومی داره وقتی میشه فایل html رو با ورد باز و ادیت کرد؟

فایل html معادل نظیر به نظیر فایل doc نیست، چون فرمت html تو نمایش متن خیلی محدود تره، گفتم شاید منبع
اصلی متن یک فایل word باشه.

و یه مشکل جدید:

زمانی که از کد برای تبدیل اعداد از فارسی به اینگیلیش استفاده می کنم، یک سری از اعداد همچنان فارسی باقی می مونن و عده ای اصلاح پذیرن. لطفا به فایل پیوست شده ام نگاهی بندازین و کمکم کنین.
خیلی مرسی دارم از شما.
دلیلش اینه که اون اعداد فارسی حقیقتا کاراکتر های Unicode عربی هستند، یعنی ٠١٢٣٤٥٦٧٨٩ که کلا ربطی به
کاراکتر های 0123456789 ندارند. Microsoft Word این کاراکتر ها رو به عنوان عدد تفسیر نمی کنه و در نتیجه با اون
کد #^ که برای پیدا کردن اعداد استفاده می کردیم پیدا نمی شوند. راه حل اینه که ابتدا این 10 کاراکتر رقم عربی رو
دونه دونه به رقم انگلیسی تبدیل کنیم.

یکبار Find & Replace برای تبدیل تمامی ٠ ها به 0 ، یکبار هم برای تبدیل تمامی ١ ها به 1 و ...
یعنی جمعا باید 10 بار Find & Replace کرد. کار مسخره ای یه، خوشبختانه به کمک یک ماکرو اینکار خیلی ساده میشه :

کد:
[B][COLOR="Blue"]Sub Macro1()[/COLOR][/B]
    Dim i As Long
    For i = 0 To 9
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = ChrW(1632 + i)
            .Replacement.Text = ChrW(48 + i)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchKashida = False
            .MatchDiacritics = False
            .MatchAlefHamza = False
            .MatchControl = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next i
[B][COLOR="Blue"]End Sub[/COLOR][/B]

برای اجرا کردن این ماکرو در منوی Microsoft Word روی دکمه دایره ای سمت چپ بالا کلیک کرده و Word Options
را انتخاب کنید. حالا در بخش Popular تیک گزینه Show Developer tab in the Ribbon رو بزنید و OK کنید.
حالا همواره در منوی بالای Microsoft Word بخش Developer مشاهده می شود. آن بخش را انتخاب کنید.
روی آیکون Macros کلیک کنید. به عنوان نام ماکرو عبارتی مثل Macro1 رو بنویسید و روی دکمه Create کلیک کنید.

حالا کد بالا را کپی کرده و در کد ماکرو جایگزین کنید. اکنون مجددا منوی Macro انتخاب کرده و روی Macro1 کلیک کنید
و با دکمه Run اجرایش کنید. حالا می توانید مجددا با Find & Replace عبارت #^ (اعداد) را به &^h^ (انگلیسی)
تغییر دهید.
 

icefall

Member
آقا مرسی. کمک خیلی بزرگی کردید به من. خدا خیرتون بده.
فقط یه چیزی:
آیا میشه عملیات تبدیل عبارت #^ (اعداد) به &^h^ (انگلیسی) رو هم در قالب یه ماکرو داشته باشم تا برای تک تک فایلهام از گزینه ی Find & Replace استفاده نکنم؟ چون تعداد فایلهام بسیار زیاده و نیاز به صرفه جویی در وقت برای این کار دارم.
مرسی از شما.

****************************************************************
تمام فایلهام قبلا html شده و من به ناچار همونها رو با نرم افزار word ویرایش می کنم. تا اینجای کار که مشکلی پیش نیومده امیدوارم تا آخر کار خوب پیش بره.
****************************************************************
 

the_king

مدیرکل انجمن
آقا مرسی. کمک خیلی بزرگی کردید به من. خدا خیرتون بده.
فقط یه چیزی:
آیا میشه عملیات تبدیل عبارت #^ (اعداد) به &^h^ (انگلیسی) رو هم در قالب یه ماکرو داشته باشم تا برای تک تک فایلهام از گزینه ی Find & Replace استفاده نکنم؟ چون تعداد فایلهام بسیار زیاده و نیاز به صرفه جویی در وقت برای این کار دارم.
مرسی از شما.

صد البته که می توانید، با Macro ها و کد نویسی میشه هر کار تکراری، پیچیده یا وقت گیر رو با چند کلیک انجام داد.
به انتهای کد قبلی یک فرمان Find & Replace اضافه کردم که #^ را با &^h^ جایگزین کند :
کد:
[B][COLOR="Blue"]Sub Macro1()[/COLOR][/B]
    Dim i As Long
    For i = 0 To 9
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = ChrW(1632 + i)
            .Replacement.Text = ChrW(48 + i)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchKashida = False
            .MatchDiacritics = False
            .MatchAlefHamza = False
            .MatchControl = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next i
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^#"
        .Replacement.Text = "^h^&"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
[B][COLOR="Blue"]End Sub[/COLOR][/B]
 

جدیدترین ارسال ها

بالا