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

Api للتحويل من نص عربي او انجليزي ال Unicode

رائج
بدأه .S.T.A.L.K.E.R في 15 سبتمبر 2009 · 72 رد · 7,901 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#51

merci

Hna Les Oranais Ghir Zetla Wel Khodmi

#52

السلام عليكم

عزيز محمد بامكانك التحقق من امكانية التحويل بواسطة الطريقة التالية

	public static void main(String[] args) {
		System.out.println(canEncode(' '));
		System.out.println(canEncode('م'));
		System.out.println(canEncode('k'));
		System.out.println(canEncode(','));
		System.out.println(canEncode('8'));
	}

	public static boolean canEncode(char c){
		CharsetEncoder ce = Charset.forName("ASCII").newEncoder();
		return ce.canEncode(c);
	}

النتيجة

true
false
true
true
true

كما انه يمكنك تجزئة رموز utf بالطريقة التالية ( لم اجربها فعليا على برنامجك ولكني احاول ان اساهم في تطوير الصنف )

String testString = "ab\\u0639\\u062B\\u0645\\u0627\\u0646 l م 7 3";
		Pattern p=Pattern.compile("\\p{XDigit}{4}");
		Matcher m=p.matcher(testString);
		while (m.find()){
		      System.out.println(m.group());
		}
		System.out.println(testString);

وشكرا

#53

شباب انا في حاجة الى هذا الصنف .

هل ممكن احصل على نسخة نهائية منه

#54
العيافـي كتب:

شباب انا في حاجة الى هذا الصنف .

هل ممكن احصل على نسخة نهائية منه

سلام يا عيافي

على ما اذكر ان المشاركة الاولى كنت عدّلتها بأخر تحديث (27-7-2010)

/index.php?showtopic=204349&view=findpost&p=1014544

تحياتي

#55

السلام عليكم

جميل جدا النقاش

تعاملت مع دالة مشابهة بالنسبة للفيجوال دوت نت للتحويل للهيكسا

وانا منذ شهر في صراع مع اليونيكود

وقد تغلبت عليه عدة جولات وبقيت الجولة الاخيرة التي تستعصي علي حتى الان وبدأت ارى ان الامر يتعقد

الموضوع

ar?hb? ?'  10?@ ? ?hb@??J@@? ?@?@?@ ?  @Y@L

هذه جملة بالعربي

طبعا الى الان لا اعرف اين مكمن الحل ولكنني بعد البحث والتنقيب توصلت الى ان القضية هي في الترميز 

ASCII    UCS2    HEX, UTF8, 8859-1

 تحديداUCS2 ربما في

هل من تراميز اخرى للتعامل مع اللغة العربية   

ألا بذكر الله تطمئن القلوب

#56

شكرا لك اخي محمد

#57

عزيزي محمد

قمت باستخدام هذا الصنف

ولاحظت ان (السطر الجديد) يتم تجاهله للتحويل من العربي الى يونيكود

كما انه يتم تجاهل "\" عند التحويل من اليونيكود الى العربي

post-82434-025442200 1290834380_thumb.gi

المرفقات
ScreenHunter_01 Nov. 27 08.05.gif
#58

بالنسبة لموضوع السطر الجدي صراحة لا اجد فيه مشكلة (اذا لم تزل المكلة موجودة لديك ارجو التوضيح)

اما بالنسبة ل "\"

تستطيع حلها هكذا

في الدالة encode

اضف السطر الشرط التالي:

if (c < 32 || c > 126 || c == 92) {//  \ == 92

لتصبح هكذا

   public static String encode(String text) {
        if (text == null || text.length() <= 0) {
            return null;
        }
        int textLen = text.length();
        StringBuilder buffer = new StringBuilder(textLen * 4);
        for (int i = 0; i < textLen; i++) {
            char c = text.charAt(i);            
            if (c < 32 || c > 126 || c == 92) {//  \ == 92
                buffer.append(toUnsignedString(text.charAt(i)));
            } else {
                buffer.append(c);
            }
        }
        return buffer.toString();
    }

ارجو ان تكون مفيدة

#59

أعرف أني اتيت متأخر جدا على الموضوع..

لكن عندي سؤال وبصراحه محرج من السؤال. ما الحاجه لاستخدام هذه المكتبه, لاحظت من ردودك يا محمد انك مهتم بأن تعمل على JME فهل ممكن ذكر بعض الحالات التي تستخدمونها فيها سواء في JME او JSE.

#60
مهدي حجازي كتب:

أعرف أني اتيت متأخر جدا على الموضوع..

لكن عندي سؤال وبصراحه محرج من السؤال. ما الحاجه لاستخدام هذه المكتبه, لاحظت من ردودك يا محمد انك مهتم بأن تعمل على JME فهل ممكن ذكر بعض الحالات التي تستخدمونها فيها سواء في JME او JSE.

اعتقد فى الـ JavaME مثلا فى ارسال المتغيرات الى سيرفر كالتسجيل مثلا

انما فالـ JavaSE فهى لضمان ان اللغه العربيه تم حفظها بشكل سليم

يعنى انا عن نفسى لو فيه ملف وحفظته على جهازى بدون اختيار ان يكون UTF-8

افتح الملف اجده عباره عن ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

كله علامات استفهام

وبالتالى لم استطع قرائه الملف

انما عندما يكون اكواد و رموز

فاقوم بعمل تتغيير للـ Unicode واتمكن من قرائته

هذا ما لدى فى هذه النقطه

ان شاء الله

اخ محمد والاخوه يفيدونا بالمزيد

دمتم فى رعايه الله وامنه

Software Developer
Mahmoudkelany.com


 

#61
اقتباس
اعتقد فى الـ JavaME مثلا فى ارسال المتغيرات الى سيرفر كالتسجيل مثلا

لا أظن ذلك، أنا لم أواجه هذه المشكله رغم أني أقوم بارسال البيانات الى PHP Server Side وليس الى Java Server Side والتي يمكنها ان تخلق مشاكل أكثر.

اقتباس
نما فالـ JavaSE فهى لضمان ان اللغه العربيه تم حفظها بشكل سليم

يعنى انا عن نفسى لو فيه ملف وحفظته على جهازى بدون اختيار ان يكون UTF-8

افتح الملف اجده عباره عن ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

كله علامات استفهام

وبالتالى لم استطع قرائه الملف

انما عندما يكون اكواد و رموز

فاقوم بعمل تتغيير للـ Unicode واتمكن من قرائته

هذا سوف يحدث اذا قمت بوضع النصوص في ملفات الكود, وما أعلمه أن كل IDE له Default Encoding يمكنك وضعها على UTF-8 وينتهي الأمر, هذا على فرض أني قمت بمثل هذا العمل وهو ما لا يجب أن يحدث بل يجب وضع النصوص دائما في ملفات خارجيه وعندها لن تحدث المشكله من الاساس لانك ستستخدم encdoing صحيح وحتى لو أخطئت فانها لن تتحول الى ???? داخل الملف الأصلي.

هل هناك حالات أخرى تستخدمونها من أجل ذلك؟

تم تعديل هذه المشاركة بواسطة مهدي حجازي في 27 نوفمبر 2010 في 14:06

#62

يعنى انا لو عملت ملف txt عادى

وكتبت فيه مثلا

كدا واردت ان احفظه

يظهر لى الرساله التاليه

post-217802-005911400 1290858639_thumb.p

ان دوست على ok فبالتالى انا استخدمت الـ default encoding

وعند فتح الملف مره اخرى يظهر هكذا

post-217802-093940500 1290858644_thumb.p

لكن ان ضغطت على cancel فانه يظهر لى النافذه الخاصه بالحفظ

ومنها اختار UTF-8

post-217802-035373600 1290858655_thumb.p

وبالتالى عند فتح الملف مره اخرى يظهر بالشكل الصحيح

هذا ما اقصده اخى مهدى

المرفقات
mmm.pngmmm2.pngmmm3.png

Software Developer
Mahmoudkelany.com


 

#63

لا أدري كيف قمت بذلك. أول مره أشاهد هذا التحذير, هل قمت بكتابه البسمله بيدك أم قمت بنقلها من مكان أخر. أنا عندي يخزنها بشكل طبيعي ف ANSI يسمح بكتابه اللغه العربيه دون مشاكل ولا يقوم بأي حال من الأحوال بتحويلها الى ؟؟؟

#64
اقتباس
ما الحاجه لاستخدام هذه المكتبه, لاحظت من ردودك يا محمد انك مهتم بأن تعمل على JME فهل ممكن ذكر بعض الحالات التي تستخدمونها فيها سواء في JME او JSE.

عند التعامل مثلا مع ملفات properties، وتحميلها في كائن Properties. الطريقة load التي تقوم بتحميل الملف تستعمل ISO 8859-1 encoded stream. لذلك يجب تخزين الحروف غير اللاتينية على شكل كود unicode

اقتباس
The load(Reader) / store(Writer, String) methods load and store properties from and to a character based stream in a simple line-oriented format specified below. The load(InputStream) / store(OutputStream, String) methods work the same way as the load(Reader)/store(Writer, String) pair, except the input/output stream is encoded in ISO 8859-1 character encoding. Characters that cannot be directly represented in this encoding can be written using Unicode escapes ; only a single 'u' character is allowed in an escape sequence. The native2ascii tool can be used to convert property files to and from other character encodings.

وأيضا بالنسبة ل ResourceBundle التي تُستعمل عادة في واجهة متعددة اللغات، وهي تستعمل أيضا ملفات properties، وينطبق عليها نفس القيد، أي إمكانية قراءة الترميز ISO 8859-1 فقط

اقتباس
The ResourceBundle properties file must be encoded with ISO-8859-1, not UTF-8. The fancy characters must be encoded with \uxxxx form. You can compose the file in some national encoding then use native2ascii.exe.

تم تعديل هذه المشاركة بواسطة herch في 28 نوفمبر 2010 في 01:32

2
#65

صراحة يا مهدي في وقت صناعتها كنت في حاجة لها، لكن حاليا احاول تذكر السبب لكن لم اتذكر

---

صراحة لم اكن اعرف الذي تكلّم عنه عصام جزاه الله كل خير

---

مهدي، هل يوجد استخدام لها في ال JavaME ؟؟

#66
مهدي حجازي كتب:

لا أدري كيف قمت بذلك. أول مره أشاهد هذا التحذير, هل قمت بكتابه البسمله بيدك أم قمت بنقلها من مكان أخر. أنا عندي يخزنها بشكل طبيعي ف ANSI يسمح بكتابه اللغه العربيه دون مشاكل ولا يقوم بأي حال من الأحوال بتحويلها الى ؟؟؟

لالالا انا كتبتها بايدى

عملت ملف جديد وكتبت فيه

.S.T.A.L.K.E.R كتب:

صراحة يا مهدي في وقت صناعتها كنت في حاجة لها، لكن حاليا احاول تذكر السبب لكن لم اتذكر

---

صراحة لم اكن اعرف الذي تكلّم عنه عصام جزاه الله كل خير

---

مهدي، هل يوجد استخدام لها في ال JavaME ؟؟

هههههههههه

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

ربنا يسترها

انا كنت عاوز اقول اللى قاله اخى عصام بس مش كنت عارف اصيغه ازاى

جزاه الله كل خير

لانى شوفت هذه الطريقه فى برامج كثيره

Software Developer
Mahmoudkelany.com


 

#67

شكرا جزيلا لك أستاذ عصام..

محمد لا أظن أن لها فائده في JME, كنت قد شاهدتها منذ سنوات وكان يستعملونها لكتابه كلمات عربيه في داخل ملفات الكود أظن عندما كانوا يستخدموا WTK.

محمود هناك شيئ مختلف بين نظامي والنظام الذي عندك، بصراحه لا أعلم ما هو ربما اعدادات في مكان ما، لأني لا أشاهد هذا التحذير نهائيا.

تم تعديل هذه المشاركة بواسطة مهدي حجازي في 29 نوفمبر 2010 في 20:50

#68
اقتباس
فالأمر بسيط

القيمة للحروف تتكون من 16 خانة في النظام الثنائي وأربع خانات في النظام السادسعشري

محمد استخدام عملية انقل إلى اليمين shift right

لكي يحص لعى كل خانة من الخانات الأربع على حدة

والتي تكون كالتالي

مثلاً العدد c=1100

لوقلنا

c>>2

فالناتج سيساوي 11 أي 3 بالنظام العشري

نلاحظ محمد قام بعملية النقل أول مرة 12 فحصل على الخانة الأولى

ثم قام البنقل على 8 فحصل على الخانتين لكنه في الدالة characterDigit عمل عملية & مع الرقم 0f

فحصل على الخانة الثانية بدون الخانة الأولى

ثم قام بالنقل إلى اليمين 4 خانات فحصل على الثلاث خانات الأواخر

لكنه في الدالة characterDigit عمل عملية & مع الرقم 0f

فحصل على الخانة الثالثة بدون الخانتين الأولى والثانية

ثم أخذ العدد كاملاً لكنه باستخدام الدالة characterDigit عمل عملية & مع الرقم 0f

فحصل على الخانة الرابعة بدون الخانتين الثلاث الأول

هاه؟ 005.gif


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#69

استاذ محمد

ممكن أشارك معكم

ما رأيك لو اصبحت الفئة هكذا

package unicode;

/**
 * Write a description of class Test2 here.
 * 
 * @author (MErsan)
 * @version (1.1)
 */
public class Unicode {

	private final static String DIGITS = "0123456789abcdef";
	private final static String ESC_U = "\\\\u";
	private final static int SHIFT = 4;
	private final static int MASK = 15;
	private final static int BASE = 16;

	public static String encode(String text) {
		if (text == null || text.trim().length() <= 0) {
			return null;
		}
		int textLen = text.length();
		StringBuilder buffer = new StringBuilder(textLen * 6);
		for (int i = 0; i < textLen; i++) {
			buffer.append(toUnsignedString(text.charAt(i)));
		}
		return buffer.toString();
	}

	private static String toUnsignedString(int num) {
		char[] buf = { '\\', 'u', '0', '0', '0', '0' };
		int charPos = 6;

		do {
			buf[--charPos] = DIGITS.charAt(num & MASK);
			num >>= SHIFT;
		} while (num > 0);// Unsigned

		return new String(buf);
	}

	private static int toSignedString(String num) {
		if (!(num.trim().length() > 0)) {
			return 0;
		}
		num = num.toLowerCase();
		int length = num.length() - 1;
		int sum = 0;
		int power = 1;

		do {
			sum += (DIGITS.indexOf(num.charAt(length--)) * power);
			power *= BASE;// base number 16
		} while (length > 0);

		return sum;
	}

	public static String decode(String s) {
		if (s == null || s.length() <= 0) {
			return null;
		}
		String[] strings = s.split(ESC_U);
		StringBuilder result = new StringBuilder(strings.length * 2);
		for (String h : strings) {
			if (h.trim().length() > 0) {
				result.append((char) toSignedString(h));
			} else {
				result.append(h);
			}
		}
		return result.toString();
	}

	public static void main(String[] args) {

		String str = encode("الفريق العربي");

		System.out.println("\n" + str);

		System.out.println("\n" + decode(encode("الفريق العربي")));

	}
}

منتظر اراء الجميع


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#70

يبدو انى لم اضف جديدا

انا اسف على هذه المشاركة :huh:

ساكتب الشفرة ب c++ واعرضها فى المنتدى هناك لاجد من يستجيب

سلام


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#71

يا محمد أنت جئت بعدما قضي الأمر لا أكثر ولا أقل

كما أنك لم تتلكم عن ما قمت به

لذا لا تتوقع الكثير

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#72

سيد محمد، انا لا احب التبرير

لكن انت رأيت الفترة الحالية من انشغال الجميع دون استثناء من الكبير للصغير في احداث مصر

تم تعديل هذه المشاركة بواسطة .S.T.A.L.K.E.R في 2 فبراير 2011 في 23:26

#73

ليست هناك اى مشكلة

شكرا على مروركم


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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

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

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

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

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