متد getBytes() رشته را به دنباله ای از بایت ها رمزگذاری می کند و آن را در یک آرایه بایت ذخیره می کند.
سینتکس متد getBytes() عبارت است از:
string.getBytes()
string.getBytes(Charset charset)
string.getBytes(String charsetName)
در اینجا، string
یک شیء از کلاس String
است.
متد getBytes() یک آرایه بایتی را برمی گرداند.
1. getBytes() بدون هیچ پارامتر
اگر هیچ پارامتری را ارسال نکنید، getBytes()
رشته را با استفاده از charset پیش فرض پلتفرم رمزگذاری می کند.
مثال: getBytes() بدون هیچ پارامتر
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
// convert the string to a byte array
// using platform's default charset
byteArray = str.getBytes();
System.out.println(Arrays.toString(byteArray));
}
}
خروجی
[74، 97، 118، 97]
توجه: ما از کلاس Arrays
در مثال بالا برای چاپ آرایه بایت به شکل قابل خواندن استفاده کرده ایم. و ارتباطی به getBytes()
ندارد.
2. getBytes() با پارامتر CharSet
موارد مختلفی برای CharSet
در جاوا موجود است:
- UTF-8 – فرمت تبدیل UCS هشت بیتی
- UTF-16 – فرمت تبدیل UCS شانزده بیتی
- UTF-16BE – فرمت تبدیل UCS شانزده بیتی، ترتیب بایت big-endian
- UTF-16LE – فرمت تبدیل UCS شانزده بیتی، ترتیب بایت little-endian
- US-ASCII – کد ASCII هفت بیتی
- ISO-8859-1 – الفبای لاتین ISO شماره 1
این موارد به صورت رشته موجود هستند. برای تبدیل این رشته ها به Charset باید از کلاس CharSet
و متد forName استفاده کنیم تا رشته های بالا به CharSet تبدیل شوند.
مثال: getBytes() با پارامتر CharSet
import java.util.Arrays;
import java.nio.charset.Charset;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
// using UTF-8 for encoding
byteArray = str.getBytes(Charset.forName("UTF-8"));
System.out.println(Arrays.toString(byteArray));
// using UTF-16 for encoding
byteArray = str.getBytes(Charset.forName("UTF-16"));
System.out.println(Arrays.toString(byteArray));
}
}
خروجی
[74، 97، 118، 97]
[-2، -1، 0، 74، 0، 97، 0، 118، 0، 97]
توجه: در برنامه فوق، java.nio.charset.Charset
را برای استفاده از CharSet
وارد کرده ایم . و کلاس Arrays
را وارد کرده ایم تا آرایه بایت را به شکل قابل خواندن چاپ کند.
3. getBytes() با پارامتر String
همچنین می توانیم نوع رمزگذاری برای getBytes()
را مستقیماً از طریق رشته ها مشخص کنیم. وقتی از متد getBytes() با این روش استفاده می کنیم، باید کد را در داخل بلوک try…catch قرار دهیم. چرا که در غیر اینصورت، در صورتی که کد رشته مورد نظر اشتباه باشد، برنامه خطایی در خروجی ارسال کرده و متوقف می شود.
مثال: getBytes() با پارامتر رشته
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
try {
byteArray = str.getBytes("UTF-8");
System.out.println(Arrays.toString(byteArray));
byteArray = str.getBytes("UTF-16");
System.out.println(Arrays.toString(byteArray));
// wrong encoding
// throws an exception
byteArray = str.getBytes("UTF-34");
System.out.println(Arrays.toString(byteArray));
} catch (Exception e) {
System.out.println(e + " encoding is wrong");
}
}
}
خروجی
[74, 97, 118, 97]
[-2, -1, 0, 74, 0, 97, 0, 118, 0, 97]
java.io.UnsupportedEncodingException: UTF-34 encoding is wrong
توجه: ما java.util.Arrays را وارد کرده ایم تا آرایه بایت را به شکل قابل خواندن چاپ کنیم و ارتباطی به getBytes()
ندارد.
دیدگاهها