История изменений
Исправление
Legioner,
(текущая версия)
:
Отвечаю не на пост, лор глючит.
А при чём тут UTF-16? В UCS-4 это один символ (сам пишешь U+10330).
При том, что в Java он хранится в кодировке UTF-16.
Этот пример расходится с твоей трактовкой «четверть количества байт в кодировке UCS-4».
Ничуть. Этот символ, как и любой другой, в UCS-4 занимает ровно 4 байта.
Ещё раз. Два примера: латинская буква «A» и готическая буква «Ahsa».
String a = "\u0041"; // latin A
String ahsa = "\ud800\udf00"; // gothic Ahsa
System.out.println(a.length()); // 1
System.out.println(ahsa.length()); // 2
System.out.println(a.getBytes("UTF-32").length); // 4
System.out.println(ahsa.getBytes("UTF-32").length); // 4
Поэтому для строки a твоё предположение
Считаю верным вариант «четверть количества байт в кодировке UCS-4»
верно. length() возвращает 1, количество байтов в кодировке UTF-32 4.
Но для строки ahsa твоё предположение уже неверно. length() возвращает 2, а количество байтов в кодровке UTF-32 по прежнему 4.
Исправление
Legioner,
:
Отвечаю не на пост, лор глючит.
А при чём тут UTF-16? В UCS-4 это один символ (сам пишешь U+10330).
При том, что в Java он хранится в кодировке UTF-16.
Этот пример расходится с твоей трактовкой «четверть количества байт в кодировке UCS-4».
Ничуть. Этот символ, как и любой другой, в UCS-4 занимает ровно 4 байта.
Ещё раз. Два примера: латинская буква «A» и готическая буква «Ahsa».
String a = "\u0041"; // latin A
String ahsa = "\ud800\udf00"; // latin Ahsa
System.out.println(a.length()); // 1
System.out.println(ahsa.length()); // 2
System.out.println(a.getBytes("UTF-32").length); // 4
System.out.println(ahsa.getBytes("UTF-32").length); // 4
Поэтому для строки a твоё предположение
Считаю верным вариант «четверть количества байт в кодировке UCS-4»
верно. length() возвращает 1, количество байтов в кодировке UTF-32 4.
Но для строки ahsa твоё предположение уже неверно. length() возвращает 2, а количество байтов в кодровке UTF-32 по прежнему 4.
Исходная версия
Legioner,
:
А при чём тут UTF-16? В UCS-4 это один символ (сам пишешь U+10330).
При том, что в Java он хранится в кодировке UTF-16.
Этот пример расходится с твоей трактовкой «четверть количества байт в кодировке UCS-4».
Ничуть. Этот символ, как и любой другой, в UCS-4 занимает ровно 4 байта.
Ещё раз. Два примера: латинская буква «A» и готическая буква «Ahsa».
String a = "\u0041"; // latin A
String ahsa = "\ud800\udf00"; // latin Ahsa
System.out.println(a.length()); // 1
System.out.println(ahsa.length()); // 2
System.out.println(a.getBytes("UTF-32").length); // 4
System.out.println(ahsa.getBytes("UTF-32").length); // 4
Поэтому для строки a твоё предположение
Считаю верным вариант «четверть количества байт в кодировке UCS-4»
верно. length() возвращает 1, количество байтов в кодировке UTF-32 4.
Но для строки ahsa твоё предположение уже неверно. length() возвращает 2, а количество байтов в кодровке UTF-32 по прежнему 4.