PDA

View Full Version : نمونه کد برای پشتیبانی Unicode در سرولت ها و JSP



pooyanm
دوشنبه 19 شهریور 1386, 11:12 صبح
من این نمونه کد را برای افزودن پشتیبانی یونیکد به Servlet ها به کار بردم که به آسانی در JSP نیز کاربرد پذیر است، کدگذاری یو تی اف 8 به عنوان استانداردی یکتا برای مبادلات داده ای نقش پایه ای در این راهکار ایفا می کند که هم در مرورگرها و هم در جاوا بسیار خوب پشتیبانی می شود.

درباره راه اندازی نمونه برنامه در فایل index.html کمی راهنمایی شده است پرسشهای دیگر هم در همین پست رسیدگی می شوند.

از دیدگاه های شما برای بهبود، افزایش سازگاری و گسترش این نمونه کد استقبال می شود.

دریافت برنامه (http://pooyanc.googlepages.com/JavaServletUnicode-Support.zip)

handinux
پنج شنبه 22 شهریور 1386, 10:58 صبح
سلام . آقا به دادم برس !
من یه برنامه دارم که بخشی از اون تحت وب.یعنی بخشی از امکانات نرم افزار رو تحت وب ارائه می ده. و خودش به صورت توکار یه webserver کوچولو داره.یعنی خودش رو پورت 80 گوش می ده و صفحات jsp رو ارائه می ده. من اون فایل شما رو دیدم.دستتون درد نکنه.اما من با اینکه جاوا بلدم ندونستم از اون کلاسها کجا استفاده کنم.من کل اون بخش وب سرور رو می زارم . یه نظر بندازید و کمک کنید ما رو . متشکرم

pooyanm
پنج شنبه 22 شهریور 1386, 13:46 عصر
سلام
این برنامه برای وب سرور tomcat نوشته شده که از این نشانی می تونی دریافت کنی:
http://tomcat.apache.org/

این وب سرور شما هم بستگی داره چطور ازش استفاده شده باشه من نتونستم اونو راه اندازی کنم چون بعضی از امکاناتش رو نداشت تامکت را هم می تونی داخل برنامه راه اندازی کنی و نتیجه را به همین روش دریافت کنی به هر حال من مستنداتی در مورد وب سرور شما و اینکه UTF-8 را پشتیبانی می کنه یا نه پیدا نکردم. اگر پشتیبانی کنه می تونی بدون فیلتر کردن Request بخش پردازش مربوط به فیلتر را برای داده های فارسی فرم دستی انجام بدی.

handinux
پنج شنبه 22 شهریور 1386, 17:13 عصر
از پیگری ممنونم
یعنی نمی شه با یک کلاس تمام خروجی های وب سرور رو به صورت یونیکد فرستاد.؟ چون می دونم یونیکد را پشتیبانی می کنه...

pooyanm
پنج شنبه 22 شهریور 1386, 18:33 عصر
تقریبا همه وب سروره و روشهای اینچنینی مجراهای بایتی دارن بنابراین تنها راه برای پشتیبانی از یونیکد همون یو تی اف-8 هست اینکه هم کلاینت و هم سرور را وادار به فرستادن و دریافت یونیکد کنی روش دشوار تری هست که با بازنویسی بخشهای زیادی از کدها ممکنه به هر حال اگه نقاط فرستادن و دریافت داده ها را مرور کنی ممکنه بتونی بلافاصله قبل از فرستادن داده ها اونا رو از unicode به UTF-8 (دنباله ای از داده های بایتی) تبدیل و پس از دریافت به یونیکد برگردونی.
تنها مشکلی که ممکنه پیش بیاد اینه که شما بخوای اطلاعات فرم های توی jsp را جابجا کنی و نتونی کدگذاری درستی در کلاینت اعمال کنی.
یه بار دیگه بررسی کن ببین می تونی روی بایتهای ارسالی و دریافتی تغییرات لازم را اعمال کنی؟ خبرشو به من بده.

handinux
پنج شنبه 22 شهریور 1386, 20:10 عصر
قبل از اینکه چک کنم...
نمیشه از فونت هایی که از UTF-8 پشتیبانی می کنند استفاده کرد.نمی دونم قبلا دیدیدتش یا نه اما یه فونت اپن سورس هست به نام free farsi که از یو تی اف ساپورت می کنه.اگر بشه کار خیلی راحت تر می شه.البته اگه بشه باز هم راهشو نمی دونم.نظر شما چیه؟

pooyanm
پنج شنبه 22 شهریور 1386, 21:36 عصر
نمیشه از فونت هایی که از UTF-8 پشتیبانی می کنند استفاده کرد
اگه شما با موفقیت متن را منتقل کنی دیگه دردسری با یو تی اف 8 نداری چون به راحتی به یونیکد تبدیل میشه شما تنها کافیه اطمینان حاصل کنی که در جایی که داده ها فرستاده می شن یونیکد دوبایتی به بایت های UTF-8 تبدیل بشن در اینصورت با هر روش انتقالی بدون تغییر UTF8 را در مقصد داری همین الان هم اگر متن منتقل شده یو تی اف 8 هست به راحتی با یک دستور به یونیکد تبدیل می شه:

try {
String unicode = new String(utf8Str.getBytes(), "UTF-8");
} catch (java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
می تونی قبل از هر کاری اینو آزمایش کنی شاید متن یو تی اف8 را داشته باشی.