logo

Јава кодирање стрингова

У Јави, када се бавимо Низ понекад је потребно кодирати низ у одређени скуп знакова. Енцодинг је начин претварања података из једног формата у други. Стринг објекти користе УТФ-16 кодирање. Проблем са УТФ-16 је што се не може мењати. Постоји само један начин који се може користити за добијање различитог кодирања, тј. бајт[] низ. Начин кодирања није погодан ако добијемо неочекиване податке. У овом одељку ћемо научити како кодирати стринг Јава .

Напомена: Није могуће кодирати стринг у УТФ-8. Дакле, користите или БитеБуффер или позовите низ на њему да бисте добили бајт[].

Пре него што наставимо даље у овом одељку, морамо разумети кодирање знакова. Хајде да погледамо на брзину. Хајде да разумемо зашто треба да кодирамо стринг .

Кодирање карактера је техника претварања текстуалних података у бинарне бројеве. Можемо доделити јединствене нумеричке вредности одређеним знаковима и претворити те бројеве у бинарни језик. Ови бинарни бројеви касније могу да се конвертују назад у оригиналне знакове на основу њихових вредности.

Проблем

Претпоставимо да имамо немачки низ Здраво а потребно га је кодирати. Размотрите следећи исечак кода:

 String str = 'Tsch�ss'; byte[] bytesOfString = str.getBytes(); String encoded_String = new String(bytesOfString, StandardCharsets.US_ASCII); assertNotEquals(encoded_String, str); 

Ако кодирамо стринг користећи УС_АСЦИИ, он даје Здраво јер УС_АСЦИИ кодирање не разуме знак који није АСЦИИ ( у ). Када конвертујемо стринг кодиран АСЦИИ у УТФ-8, добијамо исти стринг.

 String str = 'GoodBye'; byte[] bytesOfString = str.getBytes(); String asciiEncondedEnglishString = new String(bytesOfString, StandardCharsets.US_ASCII); assertEquals(encoded_String, str); 

Ако бајт[] низ садржи текст који није Уницоде, можемо да конвертујемо текст у Уницоде помоћу Низ конструктор. Насупрот томе, такође можемо да конвертујемо Стринг објекат у бајт[] низ знакова који нису Уницоде са Стринг.гетБитес() методом. Хајде да кодирамо стринг користећи гетБитес() методом.

Коришћење Стринг.гетБитес() методе

Јава Низ класа обезбеђује гетБитес() метода који се користи за кодирање стринга у УТФ-8. Метода претвара стринг у низ бајтова и складишти резултат у низ.

Синтакса:

 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 

Он анализира цхарсетНаме као параметар и враћа низ бајтова. То баца УнсуппортедЕнцодингЕкцептион ако именовани скуп знакова није подржан.

Хајде да направимо Јава програм који конвертује стринг у УТФ-8 кодирање.

СтрингЕнцодингЕкампле.јава

 public class StringEncodingExample { public static void main(String args[]) throws Exception { //string to encode String str = 'Google Cloud'; //invokes the getBytes() method and stores an array of bytes into array[] byte array[] = str.getBytes('UTF8'); System.out.println('Encoded String: '); //enhanced for loop that iterates over the array for (byte x: array) { //prints the sequence of bytes System.out.print(x+' '); } } } 

Излаз:

 Encoded String: 71 111 111 103 108 101 32 67 108 111 117 100 

Коришћење класе СтандардЦхарсетс

Такође можемо користити класу СтандардЦхарсет за кодирање стринга. Постоје два корака за кодирање стринга. Прво, декодирајте стринг у бајтове, а затим га кодирајте у УТФ-8. На пример, размотрите следећи код:

 String str = ' Tsch�ss'; ByteBuffer buffer = StandardCharsets.UTF_8.encode(str); String encoded_String = StandardCharsets.UTF_8.decode(buffer).toString(); assertEquals(str, encoded_String); 

Други начин за кодирање стринга је коришћење Басе64 кодирања. Разговараћемо о Басе64 кодирању и декодирању у наредном одељку.