PDA

View Full Version : فارسی و یونیکد !



mehdico
چهارشنبه 05 دی 1386, 16:26 عصر
--------=

با سلام خدمت اساتید گرامی

فرض کنید من یک فایل متنی یونیکد با متن زیر دارم :

نمونه

حالا موقعی که فایل رو می خونم کاراکتر ه اول خونده میشه در حالی که متن من راست به چپ هست و باید ن رو اول بخونه!

حالا باید چکار کنم؟ مشکل از نحوه ی خوندن فایل توسط برنامه ی منه یا اینکه همیشه همینجوری هست؟

من اینجوری فایل رو خوندم
FileReader = My.Computer.FileSystem.ReadAllText(File, System.Text.UnicodeEncoding.Unicode)

برنامه ی من در واقع یک مبدل هست که باید یک فایل رو بخونه و هر کاراکتر رو به علائم خاصی تبدیل کنه. من برای مقایسه از دستور
Asc
در وی بی دات نت استفاده کردم.
یعنی برای تک تک کاراکترها مقایسه انجام میشه

اگه پیشنهاد بهتری در این مورد دارید بگید

با تشکر
--------=

توسعه نویس
دوشنبه 10 دی 1386, 01:01 صبح
مثل نمونه زیر فایل متنی رو بخونی :

Using sr As StreamReader = New StreamReader("C:\import\FILE\" & "Test.txt")
Dim line AsString
Do
line = sr.ReadLine()
strText &= line
LoopUntil line IsNothing
sr.Close()
EndUsing


در روش بالا خط به خط فایل شما خوانده شده و در متغییر strText ریخته میشود و بعد که به انتهای فایل رسید sr بسته میشود.
این روش با یونیکد کاملا مطابقت دارد.

برای مقایسه کاراکترها هم از ASC استفاده نکنید چون به مشکل بر میخورید. یونیکدها از استاندارد ANCI استفاده میکنند در حالی که Asc از سیستم کد اسکی که 256 حالت رو فقط دارد پشتیبانی میکند. دو راه دارید:
1- استفاده از متد AscW به جای Asc .
2- مقایسه مستقیم کاراکترها مانند زیر:

IF strChar = 'g' Then
strChar = 'ل'
End IF