آموزش Java به صورت پروژه‌محور: سریع، کاربردی و حرفه‌ای |جلسه پانزدهم :سیستم یونیکد در جاوا
برنامه نویسی جاوا

آموزش Java به صورت پروژه‌محور: سریع، کاربردی و حرفه‌ای |جلسه پانزدهم :سیستم یونیکد در جاوا

یونیکد یک مجموعه کاراکتر بین‌المللی است که دامنه وسیعی از حروف، نمادها و اسکریپت‌ها از زبان‌های مختلف در سراسر جهان را در بر می‌گیرد.

سیستم یونیکد در جاوا

زبان برنامه‌نویسی جاوا که مستقل از پلتفرم است، به‌صورت داخلی از کاراکترهای یونیکد پشتیبانی می‌کند و به توسعه‌دهندگان اجازه می‌دهد برنامه‌هایی بسازند که به‌صورت یکپارچه با زبان‌ها و اسکریپت‌های گوناگون کار کنند.

پیش از یونیکد، استانداردهای مختلفی برای نمایش کاراکترها وجود داشت −

  • ASCII − برای ایالات متحده.
  • ISO 8859-1 − برای زبان‌های اروپای غربی.
  • KOI-8 − برای زبان روسی.
  • GB18030 و BIG-5 − برای زبان چینی.

برای پشتیبانی از کدهای چندزبانه، برخی کاراکترها با یک بایت، برخی با دو بایت نمایش داده می‌شدند. حتی ممکن بود یک کد مشخص، در یک زبان نمایانگر یک کاراکتر خاص باشد و در زبان دیگر نمایانگر کاراکتر دیگری.برای رفع این مشکل، سیستم یونیکد طراحی شد که در آن هر کاراکتر با ۲ بایت نمایش داده می‌شود. از آنجا که جاوا برای پشتیبانی از زبان‌های چندگانه توسعه داده شد، از سیستم یونیکد بهره گرفت. کمترین مقدار در یونیکد \u0000 و بیشترین مقدار \uFFFF است.

رویکردها: کار با کاراکترها و مقادیر یونیکد

دو رویکرد برای کار با کاراکترهای یونیکد در جاوا وجود دارد:

  1. استفاده از توالی‌های گریز یونیکد (Unicode Escape Sequences)
  2. ذخیره‌سازی مستقیم کاراکترهای یونیکد

رویکرد اول شامل نمایش کاراکترهای یونیکد با استفاده از توالی‌های گریز است و زمانی مفید است که نتوان کاراکترها را مستقیماً در کد جاوا تایپ یا نمایش داد. رویکرد دوم شامل ذخیره مستقیم کاراکترهای یونیکد در متغیرها است و زمانی راحت‌تر است که کاراکترها قابل تایپ یا نمایش مستقیم باشند.

انتخاب رویکرد بستگی به نیاز خاص برنامه دارد. با این حال، به طور کلی، رویکرد دوم ساده‌تر و راحت‌تر است وقتی کاراکترها قابل تایپ یا نمایش باشند، در حالی‌که رویکرد اول زمانی ضروری است که این امکان وجود نداشته باشد.

۱. استفاده از توالی‌های گریز یونیکد

یکی از روش‌های ذخیره کاراکترهای یونیکد در جاوا استفاده از توالی‌های گریز یونیکد است. توالی گریز مجموعه‌ای از کاراکترها است که نمایانگر یک کاراکتر خاص هستند. در جاوا، یک توالی گریز یونیکد با \u آغاز می‌شود و به دنبال آن چهار رقم هگزادسیمال قرار می‌گیرد که نشان‌دهنده کد یونیکد کاراکتر موردنظر است.

مثال: استفاده از توالی‌های گریز یونیکد

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main (String[]args) {
//Unicode escape sequence
char unicodeChar = '\u0041';
// point for 'A'
System.out.println("Stored Unicode Character: " + unicodeChar);
}
}
package com.tutorialspoint; public class UnicodeCharacterDemo { public static void main (String[]args) { //Unicode escape sequence char unicodeChar = '\u0041'; // point for 'A' System.out.println("Stored Unicode Character: " + unicodeChar); } }
package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main (String[]args) {   		 
      //Unicode escape sequence
      char unicodeChar = '\u0041';
      // point for 'A'
      System.out.println("Stored Unicode Character: " + unicodeChar);
   }
}

کد بالا را کامپایل و اجرا کنید. این کد نتیجه زیر را تولید خواهد کرد:

خروجی

Stored Unicode Character: A

در قطعه کد بالا، توالی گریز یونیکد \u0041 نمایانگر کاراکتر ‘A’ است. این توالی گریز به متغیر نوع char با نام unicodeChar اختصاص داده شده و سپس کاراکتر ذخیره‌شده در خروجی چاپ می‌شود.

۲. ذخیره‌سازی مستقیم مقادیر یونیکد

به‌طور جایگزین، شما می‌توانید مستقیماً یک کاراکتر یونیکد را در یک متغیر char با قرار دادن آن بین علامت‌های نقل قول تکی (' ') ذخیره کنید. با این حال، این روش ممکن است برای کاراکترهایی که نمی‌توان آن‌ها را به‌طور مستقیم با صفحه‌کلید تایپ کرد یا قابل مشاهده نیستند (مانند کاراکترهای کنترلی) مناسب نباشد.

مثال ۱: اختصاص کاراکتر یونیکد به متغیر

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main(String[] args) {
// Storing Unicode character directly
char unicodeChar = 'A';
// Directly storing the character 'A'
System.out.println("Stored Unicode Character: " + unicodeChar);
}
}
package com.tutorialspoint; public class UnicodeCharacterDemo { public static void main(String[] args) { // Storing Unicode character directly char unicodeChar = 'A'; // Directly storing the character 'A' System.out.println("Stored Unicode Character: " + unicodeChar); } }
package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main(String[] args) {
      // Storing Unicode character directly
      char unicodeChar = 'A';
      // Directly storing the character 'A'
      System.out.println("Stored Unicode Character: " + unicodeChar);
   }
}

کد بالا را کامپایل و اجرا کنید. این کد نتیجه زیر را تولید خواهد کرد:

خروجی

Stored Unicode Character: A

در این مثال، کاراکتر ‘A’ به‌صورت مستقیم بین علامت نقل قول تکی قرار گرفته و به متغیر char با نام unicodeChar اختصاص داده شده است. سپس کاراکتر ذخیره‌شده در خروجی چاپ می‌شود.

مثال ۲: اختصاص مقادیر یونیکد به متغیرها

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main(String[] args) {
// Storing Unicode characters using escape sequences
char letterA = '\u0041';
char letterSigma = '\u03A3';
char copyrightSymbol = '\u00A9';
// Storing Unicode characters directly
char letterZ = 'Z';
char letterOmega = '';
char registeredSymbol = '';
// Printing the stored Unicode characters
System.out.println("Stored Unicode Characters using Escape Sequences:");
System.out.println("Letter A: " + letterA);
System.out.println("Greek Capital Letter Sigma: " + letterSigma);
System.out.println("Copyright Symbol: " + copyrightSymbol);
System.out.println("\nStored Unicode Characters Directly:");
System.out.println("Letter Z: " + letterZ);
System.out.println("Greek Capital Letter Omega: " + letterOmega);
System.out.println("Registered Symbol: " + registeredSymbol);
}
}
package com.tutorialspoint; public class UnicodeCharacterDemo { public static void main(String[] args) { // Storing Unicode characters using escape sequences char letterA = '\u0041'; char letterSigma = '\u03A3'; char copyrightSymbol = '\u00A9'; // Storing Unicode characters directly char letterZ = 'Z'; char letterOmega = ''; char registeredSymbol = ''; // Printing the stored Unicode characters System.out.println("Stored Unicode Characters using Escape Sequences:"); System.out.println("Letter A: " + letterA); System.out.println("Greek Capital Letter Sigma: " + letterSigma); System.out.println("Copyright Symbol: " + copyrightSymbol); System.out.println("\nStored Unicode Characters Directly:"); System.out.println("Letter Z: " + letterZ); System.out.println("Greek Capital Letter Omega: " + letterOmega); System.out.println("Registered Symbol: " + registeredSymbol); } }
package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main(String[] args) {
      // Storing Unicode characters using escape sequences
      char letterA = '\u0041';
      char letterSigma = '\u03A3';
      char copyrightSymbol = '\u00A9';
      // Storing Unicode characters directly
      char letterZ = 'Z';
      char letterOmega = '';
      char registeredSymbol = '';
      // Printing the stored Unicode characters
      System.out.println("Stored Unicode Characters using Escape Sequences:");
      System.out.println("Letter A: " + letterA);
      System.out.println("Greek Capital Letter Sigma: " + letterSigma);
      System.out.println("Copyright Symbol: " + copyrightSymbol);
      System.out.println("\nStored Unicode Characters Directly:");
      System.out.println("Letter Z: " + letterZ);
      System.out.println("Greek Capital Letter Omega: " + letterOmega);
      System.out.println("Registered Symbol: " + registeredSymbol);
   }
}

کد بالا را کامپایل و اجرا کنید. این کد نتیجه زیر را تولید خواهد کرد:

خروجی

کاراکترهای یونیکد ذخیره‌شده با استفاده از توالی‌های گریز:
حرف A: A  
حرف بزرگ یونانی سیگما:  
نماد کپی‌رایت:  

کاراکترهای یونیکد ذخیره‌شده به‌صورت مستقیم:
حرف Z: Z  
حرف بزرگ یونانی امگا:  
نماد ثبت‌شده (Registered):  

Stored Unicode Characters using Escape Sequences:

Letter A: A

Greek Capital Letter Sigma: Σ

Copyright Symbol: ©

Stored Unicode Characters Directly:

Letter Z: Z

Greek Capital Letter Omega:

Ω Registered Symbol: ®


مثال ۳: اختصاص کاراکترها و مقادیر یونیکد به متغیرها

این مثال نشان می‌دهد که چگونه می‌توان کاراکترهای یونیکد ذخیره‌شده را دستکاری کرد. در اینجا، اختلاف بین حرف بزرگ 'A' و حرف کوچک 'a' محاسبه می‌شود و از این اختلاف برای به‌دست آوردن حرف بزرگ 'C' استفاده می‌شود. سپس با افزودن عدد ۳۲ به کد یونیکد حرف بزرگ 'C'، حرف کوچک 'c' محاسبه می‌شود. کاراکترهای یونیکد دستکاری‌شده در خروجی چاپ می‌شوند.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main(String[] args) {
// Storing Unicode characters using escape sequences
char letterA = '\u0041';
char letterSmallA = '\u0061';
// Storing Unicode characters directly
char letterB = 'B';
// Manipulating the stored Unicode characters
int difference = letterA - letterSmallA;
char letterC = (char) (letterB + difference);
char letterSmallC = (char) (letterC + 32);
// Printing the manipulated Unicode characters
System.out.println("Manipulated Unicode Characters:");
System.out.println("Difference between A and a: " + difference);
System.out.println("Calculated Letter C: " + letterC);
System.out.println("Calculated Letter c: " + letterSmallC);
}
}
package com.tutorialspoint; public class UnicodeCharacterDemo { public static void main(String[] args) { // Storing Unicode characters using escape sequences char letterA = '\u0041'; char letterSmallA = '\u0061'; // Storing Unicode characters directly char letterB = 'B'; // Manipulating the stored Unicode characters int difference = letterA - letterSmallA; char letterC = (char) (letterB + difference); char letterSmallC = (char) (letterC + 32); // Printing the manipulated Unicode characters System.out.println("Manipulated Unicode Characters:"); System.out.println("Difference between A and a: " + difference); System.out.println("Calculated Letter C: " + letterC); System.out.println("Calculated Letter c: " + letterSmallC); } }
package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main(String[] args) {
      // Storing Unicode characters using escape sequences
      char letterA = '\u0041';
      char letterSmallA = '\u0061';
      // Storing Unicode characters directly
      char letterB = 'B';

      // Manipulating the stored Unicode characters
      int difference = letterA - letterSmallA;
      char letterC = (char) (letterB + difference);
      char letterSmallC = (char) (letterC + 32);
      // Printing the manipulated Unicode characters
      System.out.println("Manipulated Unicode Characters:");
      System.out.println("Difference between A and a: " + difference);
      System.out.println("Calculated Letter C: " + letterC);
      System.out.println("Calculated Letter c: " + letterSmallC);
   }
}

کد بالا را کامپایل و اجرا کنید. این کد نتیجه زیر را تولید خواهد کرد:

خروجی

کاراکترهای یونیکد دستکاری‌شده:  
اختلاف بین A و a: -32  
حرف محاسبه‌شده C: "  
حرف محاسبه‌شده c: B  

Manipulated Unicode Characters:
 Difference between A and a: -32 
Calculated Letter C: "
 Calculated Letter c: B

در جاوا، شما می‌توانید کاراکترهای یونیکد را با استفاده از «لیترال‌های کاراکتر» به دو روش ذخیره کنید:

  1. ۱. به‌کارگیری توالی‌های گریز یونیکد
  2. ۲. قرار دادن مستقیم کاراکترها بین علامت‌های نقل قول تکی

هر دو روش مزایا و محدودیت‌های خود را دارند. توالی‌های گریز راهی یکپارچه برای نمایش هر کاراکتر یونیکد در کد منبع فراهم می‌کنند، در حالی‌که ذخیره‌سازی مستقیم کاراکترها زمانی راحت‌تر است که با کاراکترهایی سر و کار داریم که به‌راحتی قابل تایپ یا نمایش هستند.این مقاله الگوریتمی برای ذخیره کاراکترهای یونیکد در جاوا ارائه داد، دو رویکرد متفاوت برای ذخیره این کاراکترها را مورد بررسی قرار داد، و برای هر روش مثال‌های کاربردی نشان داد. درک این تکنیک‌ها به توسعه‌دهندگان کمک می‌کند تا برنامه‌هایی ایجاد کنند که بتوانند با زبان‌ها و اسکریپت‌های متنوع به‌صورت یکپارچه کار کنند و از قدرت یونیکد در برنامه‌نویسی جاوا بهره ببرند.

PHP از دستورات echo و print برای نمایش خروجی در مرورگر یا کنسول PHP استفاده می‌کند. هر دو ساختارهای زبان...
شناسه‌ها در ++C نام‌های منحصربه‌فردی هستند که برای شناسایی متغیرها، توابع، کلاس‌ها، آرایه‌ها و سایر آیتم‌های تعریف‌شده توسط کاربر در...
++C
کلمات کلیدی در C++ کلمات رزرو شده‌ای هستند که برای کامپایلر معنا و مفهوم خاصی دارند. این کلمات نمی‌توانند برای...
++C
ثابت‌ها به مقادیر ثابتی اشاره دارند که برنامه نباید آن‌ها را تغییر دهد و به آن‌ها لیترال (Literal) گفته می‌شود. ثابت‌ها می‌توانند...
C++ Programming Language
توکن‌های C++ کوچک‌ترین واحدهای مستقل در یک برنامه هستند که توسط کامپایلر شناسایی و پردازش می‌شوند. این توکن‌ها با هم...
C++ Programming Language
حذف فضای نام (Namespace) شما می‌توانید به‌صورت صریح از پیشوند std:: برای اشیاء و توابع کتابخانه استاندارد استفاده کنید، به‌جای اینکه از...
C++ Programming Language
1

پشتیبانی واتساپ هوش فعال