Java - Задача C char UTF-8 выпуск - PullRequest
0 голосов
/ 01 сентября 2011

У меня небольшая проблема с преобразованием Java в UTF-8. У меня есть код Objective C:

const char *p = [[NSString stringWithFormat:@"0x%@",md5Hash] UTF8String];

, где md5Hash - NSString, и мне нужно найти способ объявить то же самое char p в Java, но не нашел, как установить char в UTF-8.

Есть идеи или предложения?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Я не знаю об Objective C, но в Java символами являются UTF-16, и таким образом String внутренний буфер символов. Вы можете конвертировать из и в UTF-8, если вам нужно:

// creates a String from the bytes understanding them as UTF-8 chars
byte[] data = ...
new String(data, "UTF-8"); 

или

// get the bytes that would represent that string in UTF-8
String myString = "Hello";
myString.getBytes("UTF-8"); 

Надеюсь, это поможет ...

Примечание: если вам нужно потоковое решение, вы также можете использовать InputStreamReader и OutputStreamWriter для этого же преобразования, но это уже другая история ...

1 голос
/ 01 сентября 2011

В Java строка содержит символы Юникода, и вы не заботитесь о ее кодировании, пока не преобразуете ее в байтовый массив.Посмотрите на String.getBytes(String charsetName).Если у вас есть байтовый массив и вы хотите сделать его строкой, вам также необходимо указать кодировку.Класс String имеет constrcutor, в котором вы передаете байтовый массив и его кодировку в качестве аргумента.

В классах ввода-вывода также есть способ записи / чтения строк в / из двоичного потока с использованием определенной кодировки.Посмотрите на конструкторы OutputStreamWriter и InputStreamReader.

...