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

تتحول الحروف العربية الى استفهام عندما استخدم jsp

مغلق
بدأه - a l t - في 26 أبريل 2006 · 30 رد · 3,688 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

في JSP

عندما اوجة طلب باستخدام jsp:forward مع ارسال بارمتر ذو قيمه نصيه باللغة العربية ، فان الحروف تتغير الى علامات استفهام

علما باني استخدمت في بداية الصفحة

هذا الوسم

<%@ page contentType="text/html; charset=windows-1256" %>

و في ال HEAD استخدمت الوسم

<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">

فما هو الحل ؟

11_03_06_12_48_57_1142110137Image(_66).jpg

#2

عند أخذ قيمة الـ Parameter :

ٍString Parameter=new String(request.getParameter("Parameter").getBytes(),"Cp1256");

لمعلومات إضافية

هنا

تم تعديل هذه المشاركة بواسطة red_knight في 26 أبريل 2006 في 18:59

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#3

استعمل

windows-1252

و ستحل المشكلة حسب ما اعتقد

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#4

على فكرة يوجد قسم خاص لتقنية JSP

سوف انقل الموضوع هذا الى الداخل عندما تخبرني بانك علمت بذلك

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#5

شكرا red_knight

شكرا رامي العيساوي

الله يزيدكم من فضله

11_03_06_12_48_57_1142110137Image(_66).jpg

#6

لا أدري لماذا لا تستخدمون utf8!

أي معلومة بهذا الصدد؟

#7

أنا شخصياً واجهت عدة مشاكل مع الـ UTF-8

خصوصاً مع تمثيل بعض الأحرف لبعض الخطوط وعمليات التخزين مع الـ DBMS

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#8

هذا بالنسبة للعربي وhtml

ماذا عن العربي في application

وقراءته من لوحة المفاتيح او الملف

اي افكار

#9
هنا
public Money getRich(String name){
return new Money(1,000,000,000 );
}
#10

شكرا red- knight

لكن هل يقتصر هذا فقط على القراءة والكتابة من الملفات

ماذا عن القراءة من لوحةالمفاتيح هل ينفع معه هذا ؟؟؟؟

#11

لا بالطبع لايقتصر على الملفات ...

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#12

هل من مثال كامل على ذلك

لاني حين اخذت الاقتباس واجهت بعض المشاكل

الا يوجد برنامج او class كامل للتعامل مع الملفات بالعربي؟؟؟

#13

لا تأخذ الإقتباس بل حاول فهمه بدلاً من ذلك...

لا يوجد برنامج أو Class فأنت لاتحتاج لهذا أصلاً ...

أستطيع إعطائك مثالاً كاملاً لذلك ولكن قل لي مالذي ستقوم بعمله ؟ حتى يكون المثال مناسباً

وهل ستقوم باستخدام الـ GUI في ذلك أم لا ؟

تم تعديل هذه المشاركة بواسطة red_knight في 6 مايو 2006 في 21:19

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#14

اود ان اقرا جملة بالعربي من الملف ثم اقوم بعد الكلمات فيها

وبعد ذلك اكتب الناتج في ملف اخر

وهكذا حتى اصل الى نهاية الملف

#15

أهلا بك ،،،

لاداعي لتحويل الكلمات إلى اللغة العربية لأنك فقط ستقوم بعدها وليس بقرائتها فعلياً وعرضها ( بنائاً على مثالك )

ولاحظ في هذا الـ Code أن الملف الذي يحتوي على الكلام العربي يجب أن يكون اسمه File.txt إلا إذا أردت تغييره والناتج

سيكون في ملف اسمه File2.txt سيتكون من تلقاء نفسه وكل هذه الملفات ستكون في نفس الـ Directory التي يوجد

بها الـ Class File ،،، المثال مبني على إنك ستقوم بقراء الملف كاملاً وأخذ عدد الكلمات الموجودة فيه وتخزين العدد في ملف آخر

import java.io*;
import java.util.*;

public class Counter {

public static void main(String[] args) throws IOException{

BufferedReader fr=new BufferedReader(new FileReader("File.txt")); // create a FileReader

String line=fr.readLine(); //Take the first line
String content=""; // represents the file content

while(line!=null){
content+=line;       // add the line to the content
line=fr.readLine(); // Take a new line 
}

StringTokenizer st=new StringTokenizer(content," "); // pass 'content' to a new StringTokenizer tokenizing by spaces
int countWords=st.countTokens(); // number of Tokens=number of words

PrintWriter fw=new PrintWriter(new FileWriter("File2.txt")); // create a FileWriter
fw.print(Integer.toString(countWords));

}

تم تعديل هذه المشاركة بواسطة red_knight في 7 مايو 2006 في 20:08

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#16

اشكرك ياred kinght

مع ان المثال لم يعمل معي

لكني ايضا اريد رؤية الكتابة بالعربي و عرضها لاحقا في jtext aread

على فكرة

اجد صعوبة في ايجاد مشاركاتي وعلى البحث عن اسمي لاني لا اذكر اسم الموضوع

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

غريب

#17
اقتباس
اشكرك ياred kinght

مع ان المثال لم يعمل معي

لماذا لم يعمل مالخطأ الذي حصلت عليه ؟

اقتباس
لكني ايضا اريد رؤية الكتابة بالعربي و عرضها لاحقا في jtext aread

على فكرة

حول content التي تمثل محتوى الملف إلى String آخر معرب باضافة السطر إلى المثال السابق كالتالي:

String arabicContent=new String(content.getBytes("cp1256")); // Decoding it into arabic

الآن arabicContent تمثل محتوى الملف ولكن بالعربي !

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#18
اقتباس
لماذا لم يعمل مالخطأ الذي حصلت عليه ؟

لم يكن هناك خطا لكني لم يكتب اي نتائج في file2

اقتباس
String arabicContent=new String(content.getBytes("cp1256")); // Decoding it into arabic

ٍساجربها واخبرك بالنتائج

شكرا على كل حال

#19
اقتباس
لم يكن هناك خطا لكني لم يكتب اي نتائج في file2

نعم فقد رأيت وذلك وهذا هو التعديل النهائي:

import java.io.*;
import java.util.*;

public class Counter {

public static void main(String[] args) throws IOException{

BufferedReader fr=new BufferedReader(new FileReader("File.txt")); // create a FileReader

String line=fr.readLine(); //Take the first line
String content=""; // represents the file content

while(line!=null){
content+=line+"\r\n";       // add the line to the content
line=fr.readLine(); // Take a new line 
}

StringTokenizer st=new StringTokenizer(content); // pass 'content' to a new StringTokenizer tokenizing by spaces
int countWords=st.countTokens(); // number of Tokens=number of words


PrintWriter fw=new PrintWriter(new FileWriter("File2.txt"),true); // create a FileWriter

fw.println(Integer.toString(countWords));

String encodedArabicContent=new String(content.getBytes(),"cp1256"); //Encode

String decodedArabicContent=new String(encodedArabicContent.getBytes("cp1256")); //Decode

fw.println(decodedArabicContent);

}}

هذا سيحل المشكلة نهائياً وسيطبع عدد الكلمات والمحتوى بالعربي في File2

قمت بتجربته والناتج كالتالي :

File.txt:
منتدى الفريق العربي للبرمجة 

File2.txt:
4
منتدى الفريق العربي للبرمجة

تم تعديل هذه المشاركة بواسطة red_knight في 8 مايو 2006 في 20:00

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#20

اشكر يا red_knight

على جهودك

واسال الله ان يزيدك علما

لكن للاسف هذه المرة لا اخطاء ولم يكتب شيئا

جربت الكود في اكثر من java compiler

لكن لا شي

الحمد لله

#21

حياك الله عزيزي

غريب !

أنا متأكد والله 100% أنه يعمل وقد قمت بتجربته ولكن هل راعيت التالي:

اسم الملف المراد القراءة منه يحب أن يكون اسمه File ونوعه txt

الناتج سيكون في ملف سيتكون من تلقاء نفسه اسمه File2 ونوعه txt

الملف File.txt يجب أن يكون نفس مكان Class الناتج بعد الـ Compilation

قم بحذف جميع الـ Classes السابقة وقم بعمل Compile من جديد لأخر Code قمت باضافته

ماهي إصدارة الـ JDK التي تستعملها ? حيث إن إصدارتي هي 1.5 وقد يحدث بعض المشاكل إذا كانت الإصدارة قديمة جداً

و أخيراً هذا هو الـ Code للتأكيد - قم بالإستبدال الكامل للـ Code القديم ولاتقم بالتعديل.

import java.io.*;
import java.util.*;

public class Counter {

public static void main(String[] args) throws IOException{

BufferedReader fr=new BufferedReader(new FileReader("File.txt")); // create a FileReader

String line=fr.readLine(); //Take the first line
String content=""; // represents the file content

while(line!=null){
content+=line+"\r\n";       // add the line to the content
line=fr.readLine(); // Take a new line 
}

StringTokenizer st=new StringTokenizer(content); // pass 'content' to a new StringTokenizer tokenizing by spaces
int countWords=st.countTokens(); // number of Tokens=number of words


PrintWriter fw=new PrintWriter(new FileWriter("File2.txt"),true); // create a FileWriter

fw.println(Integer.toString(countWords));

String encodedArabicContent=new String(content.getBytes(),"cp1256"); //Encode

String decodedArabicContent=new String(encodedArabicContent.getBytes("cp1256")); //Decode

fw.println(decodedArabicContent);

}}

تم تعديل هذه المشاركة بواسطة red_knight في 9 مايو 2006 في 12:12

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#22

بسم الله الرحمن الرحيم

اخي الفاضل red_knight

ما قصرت والله

وما يحتاج تحلف انا مصدقك

وانا راعيت كل النقاط اللي ذكرتها

الا سالفة ال jdk

كيف اتاكد من version

سويت searchوما طلع شي

control panel

الله يبارك فيك

ويزيدك علم وفهم

واشهد انك ما قصرت

#23

نزلت عندي هذا ولم يحدث شي :-(

j2sdk-1_4_2_05-windows-i586-p-iftw

#24

أهلا بك مرة أخرى وحياك في أي وقت

أنا آسف فقد استنفذت جميع الأفكار لحل المشكلة ولكن تستطيع أن تأخذ آخر Code كتبته وتعرضه على أحدهم ليجربه على جهازه أو تستعين بشخص وجهاً لوجه ليساعدك في الموضوع لأن الـ Code نظرياً صحيح ويعمل على جهازي وبالنسبة لإصدارة الـ JDK جرب تستبدلها بآخر إصدارة

من هنا

j2ee1_4.gif

public Money getRich(String name){
return new Money(1,000,000,000 );
}
#25

بسم الله الرحمن الرحيم

اخي الفاضل red_knight

ما قصرت والله

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

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

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

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

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

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