الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف لي أن أعرف ما هو نوع الترميز encoding لأي ملف نصي

مغلق
بدأه عبد الكريم كنعان في 21 سبتمبر 2006 · 11 رد · 3,009 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#3

بنسبه للعة الانجليزية فيمكنل اسخدام الاوضع الافتراضي ام اعربي فهي تختلف في طبيعة تكويدها

#5

لا اتصور ان هناك طريقة محددة ...

اذا كنت انت مستخدم البرنامج فبإمكانك تجريب عدة encoding الى ان تحصل على نتيجة مفهومة.

اذا كنت مبرمج فاعتقد المسألة معقدة.

ما اعرفه ان Internet Explorer عنده طرق لتحليل النص كاملا و "محاولة" اكتشاف الـ encoding, بناءا على معطيات معينة تتعلق بخصائص النصوص في اللغات المختلفة.

راجع هذه المقالة:

http://www.joelonsoftware.com/articles/Unicode.html

اذا لم تكن تريد قراءة المقال كاملا, انزل الى قسم "The Single Most Important Fact About Encodings"

و هنا أقتبس:

Internet Explorer actually does something quite interesting: it tries to guess, based on the frequency in which various bytes appear in typical text in typical encodings of various languages, what language and encoding was used. Because the various old 8 bit code pages tended to put their national letters in different ranges between 128 and 255, and because every human language has a different characteristic histogram of letter usage, this actually has a chance of working. It's truly weird, but it does seem to work often enough that naïve web-page writers who never knew they needed a Content-Type header look at their page in a web browser and it looks ok, until one day, they write something that doesn't exactly conform to the letter-frequency-distribution of their native language, and Internet Explorer decides it's Korean and displays it thusly,

فإذن حتى لو استطعت تحليل النص و اكتشاف الـ encoding, فإن هذه الطريقة ليست مضمونة تماما, و لكنها محاولة لها فرصة في النجاح, و هي على كل حال افضل من لا شيء.

#6

شكرا أخ حسن :)

لم يذكر لنا الأخ عبد الكريم, لماذا تريد أن تعرف الـ Encoding الخاص بالملف. اذكر لنا السبب ربما يوجد حلول أخرى لمشكلتك.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#7
اقتباس
كيف لي أن أعرف ما هو نوع الترميز encoding لأي ملف نصي

تقصد ملف نصي بامتداد txt؟

اقتباس
بنسبه للعة الانجليزية فيمكنل اسخدام الاوضع الافتراضي ام اعربي فهي تختلف في طبيعة تكويدها

كلام غير دقيق وغير سليم... ما هو الوضع الإفتراضي للإنجليزية؟

كما ذكر الأخ حسن

الموضوع التالي قد يفيد :

Some files come up strange in Notepad

يجب أن تكون لديك معلومات بالـ encodings المختلفة ...

لا أعلم إن كانت C# تقدم classes جاهزة لذلك أم لا ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#8

مرحبا

بالنسبة للأخ معتز شمس حاجتي لذلك هي أنني أنشئ برنامج لتشفير النصوص

البرنامج يحتوي على RichTextBox عند تنفيذ أمر التشفير أقوم بأخذ النص من الـ RichTextBox وأضعه بملف نصي (يخزن افتراضيا بغير نمط Ansi) ثم يتم إرسال الملف النصي إلى كائن Object التشفير ليقوم بفتح الملف وتنفيذ المهمة

لاحظ مهمة أخذ النص من الـRichTextBox وتخزينها ضمن الملف قام بها C# وفعلا لاحظت أن كل حرف عربي يأخذ 2 بايت ولكن قمت بكتابة داخل الملف النصي يدويا من خلال الـNotePad فظهرت المشكلة أن كل حرف عربي يأخذ بايت واحد مم أدى إلى خلل بعملية القراءة فأصبح يقرأ رموز غريبة ليست عربية أو يقرا كل النص كأنه فراغات......ومشاكل وتحل هذه المشكلة بأن أضبط القارئ StreamReader بالخيار System.Text.Encoding.Default في هذه الحالة حل هذا الأمر ولكن ظهرت مشكلة بأن الملفات التي كان يحفظها C# أصبحت تقرا برموز غريبة

طبعا الحل المبدئي أن أجعل StreamWriter يكتب بالنسيق أو بالترميز الـ Ansi

ولكن ألا يوجد طريقة أفضل بأن أعرف ترميز الملف النصي وبذلك يكون البرنامج أقوى ومجهز من أجل أي نوع من ترميز الملفات وشكرا

بالنسبة للأخ cipher سأحاول قراءة الموضوع الذي أشرت إليه

تم تعديل هذه المشاركة بواسطة عبد الكريم في 25 سبتمبر 2006 في 23:28

#9
اقتباس
ولكن ظهرت مشكلة بأن الملفات التي كان يحفظها C# أصبحت تقرا برموز غريبة

جرب تقرا بالـ UTF-8

#10

مرحبا

أخ hazzoom لقد جربت ذلك سابقا ولكن ملف النصي الذي كتبته بيدي سيخزن افتراضيا بنمط الـ Ansi ولا يمكن لنوع ثاني أن يفمه وشكرا

#11

جرب تكتب حروف انجليزية, اذا كانت ايضا تاخذ بايتين فعلى الاغلب الـ encoding هو UTF-16 اما اذا كانت الحروف الانجليزية تاخذ بايت واحد (و العربية تاخذ بايتين) فأتصور ان الـ encoding هو UTF-8

#12

ارجو منكم الاطلاع علي هذا الكود IsUnicode.htm وهو من مكتبة ICSharpCode.TextEditor

مواضيع متنوعة

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…