Всякий раз, когда я печатаю или пишу символ £ или даже делаю что-нибудь с ним, он всегда отображается как £ без причины для того, чтобы там был. Я попытался написать символ в юникоде, но это все равно привело к этой странной комбинации. Есть ли способ удалить это или предотвратить это?
public class GenericClass
{
public static void main(String[] args)
{
System.out.println("£");
}
}
Это все, что печатается:
Просто в командной строке, это не проблема, потому что она не будет работать, если я использую System.out.println ().
public class GenericClass { public static void main(String[] args) { System.out.println("£".substring(1)); } } Что это дает вам?
Это работает хорошо, плохо исследуйте подстроку и посмотрите, как я могу применить это там, где мне это нужно. Спасибо
@ Dr3amer17, это один из тех случаев, когда я хочу, чтобы StackOverflow разрешил голосование против комментариев. То, что вы предлагаете, просто неверно. Тот факт, что он вообще работает, означает, что £ не кодируется должным образом при компиляции. И ваше предложение с треском проваливается для символов Unicode, которые закодированы в UTF-8 таким образом, что значение 2-го байта не соответствует значению кодируемой точки. Решение настоящий состоит в том, чтобы исправить кодировку, а не обойти ее.
@RemyLebeau Я бы (и сделал) пометил как "Что-то еще"> "Опасно вводит в заблуждение"




Ваш исходный файл, вероятно, UTF-8 и поэтому обрабатывает £ как два 8-битных символа: Â £
Для переносимости вы должны использовать экранированные последовательности Unicode в строковых литералах, подобных этому.
public class GenericClass
{
public static void main(String[] args)
{
System.out.println("\u00A3");
}
}
Где вы это распечатываете? Возможно, экран / инструмент и т. д. Не могут правильно обрабатывать Unicode.