Получение странных результатов из кодовых точек строки Java на компьютере с WindowsJAVA

Программисты JAVA общаются здесь
Anonymous
Получение странных результатов из кодовых точек строки Java на компьютере с Windows

Сообщение Anonymous »

Я написал этот метод:

Код: Выделить всё

public String unicodePrint(String input) {
if (input != null && !input.isEmpty()) {
StringBuilder sbTitle = new StringBuilder();
System.err.println(input); // 挑战
final int length = input.length();
for (int offset = 0; offset < length;) {
final int codepoint = input.codePointAt(offset);
if (codepoint > 127) {
sbTitle.append(htlmDelim + codepoint);
} else {
sbTitle.appendCodePoint(codepoint);
}
offset += Character.charCount(codepoint);
}
input = sbTitle.toString();
System.err.println(input); // &#230&#338&#8216&#230&#710&#732
}
return input;
}
и я тоже попробовал этот вариант:

Код: Выделить всё

for (int i = 0; i < input.length(); i++) {
int codepoint = input.codePointAt(i);
if (codepoint > 127) {
sbTitle.append(htlmDelim + codepoint);
} else {
sbTitle.appendCodePoint(codepoint);
}
}
В любом случае следует напечатать два кода:
挑战

Код: Выделить всё

I breakpointed in Eclipse and this line
final int length = input.length();
gave 2. But clearly, as you can see from the results,
in a windows non-debug situation, it gives 6.
... и это то, что я наблюдаю при отладке Eclipse и на машине с Linux.
Однако в Windows выводятся шесть, независимо от того, как я их извлекаю:
&#230&#338&#8216&#230&#710&#732
Что не так с моим кодом?

Вернуться в «JAVA»