2013-06-21 3 views
4

Я ищу способ получить значение Unicode для данного символа и, если возможно, сохранить его как целое число. Любой встроенный метод для этого в Java, или мне нужно закодировать свой собственный?Получение значения Unicode для char: Java

Контекст

Я строй основной программы шифрования для удовольствия. Мне нужно сопоставить каждому символу в наборе Unicode целое число, которое затем я могу манипулировать в моей формуле шифрования.

Я подумал об использовании значений ASCII для char, указав char как int, но затем я прочитал об Unicode онлайн и понял свою ошибку.

Любая помощь будет оценена по достоинству.

+0

Java 'char' уже' UNICODE' (в частности, это '' UTF-16'] (http://en.wikipedia.org/wiki/UTF-16)). – dasblinkenlight

+0

'char c = somechar ....', 'int unicodeValue = somechar' enough – pinkpanther

+2

Кодовая точка Unicode может храниться только в' int', а не в 'char'. Это классическая ошибка начинающего. Java 'char' содержит только отдельные кодовые единицы UTF-16. Он не может содержать кодовую точку. – tchrist

ответ

3

Язык программирования Java представляет текст в последовательностях 16-разрядных блоков кода, используя кодировку UTF-16.

Следовательно, это достаточно:

char character='a'; 
int code = character; 
System.out.println(code); 

В соответствии с JLS 3.10.4

Символьные литералы может представлять только UTF-16 кодовых блоков (п.3.1), то есть, они ограничены значениями из \ u0000 to \ uffff. Дополнительные символы должны быть представлены либо как суррогатная пара в последовательности символов, либо как целое число, в зависимости от API, с которым они используются.

+6

Если ваш UTF находится в строке, в идеале вы должны [перебирать коды, а не символы] (http://stackoverflow.com/questions/1527856/how-can-i-iterate-through-the-unicode-codepoints -of-a-java-string) в случае наличия 4-байтовых кодовых точек. –

+0

+1 для упоминания об этом. – NINCOMPOOP