Я хочу установить юникод символ в файле класса, как это:Использование символа unicode в файле .java?
TextView tv = ...;
tv.setText("·");
есть все, что потенциально неправильно с использованием Юникода символа в файле .java?
Благодаря
Я хочу установить юникод символ в файле класса, как это:Использование символа unicode в файле .java?
TextView tv = ...;
tv.setText("·");
есть все, что потенциально неправильно с использованием Юникода символа в файле .java?
Благодаря
No. Java строки поддерживают Unicode, так что вы не должны работать в каких-либо проблем. Возможно, вам придется проверить, что класс TextView
обрабатывает все символы Юникода (что ему нужно), но сама Java будет обрабатывать символы юникода.
Вы также должны убедиться, что файл сохранен с правильными настройками кодировки. По сути, это означает, что ваш редактор должен сохранять java-файл в кодировке Unicode, кодированный UTF-8. См. Комментарии к этому ответу для получения дополнительной информации об этом.
Вам также необходимо убедиться, что редактор, который вы используете, сохранит источник Java в UTF-8 (что и ожидает компилятор). В Eclipse проще всего перейти к Windows -> Preferences -> General -> Workspace, а затем установить кодировку текстового файла в UTF-8. –
Мне всегда интересно, почему Eclipse задал кодировку текстового файла по умолчанию в зависимости от среды ОС. IMO, IntelliJ имеет гораздо лучшие настройки по умолчанию. –
@TedHopp Хм, он не поймет UTF-16 (с BOM) и т. Д.? –
Есть ли что-то потенциально неправильное в использовании символа unicode в файле .java?
Как вы знаете, строки внутри JVM сохраняются в Unicode - так что вопрос в том, как иметь дело с Unicode в Java исходных файлов ...
Короче говоря, с использованием Unicode в порядке. Есть несколько способов подойти к нему ...
По умолчанию компилятор javac
ожидает, что исходный файл будет находиться в кодировке по умолчанию платформы. Это может быть переопределен с помощью -encoding
флаг:
-encoding encoding
Задает имя кодировки исходного файла, такие как EUCJIS/SJIS/ISO8859-1/UTF8. Если-encoding
не указан, используется преобразователь по умолчанию платформы .
В качестве альтернативы, если это один символ (как это, кажется), вы можете сохранить исходный файл в кодировке платформы по умолчанию, а также указать символ с помощью последовательности символов Unicode:
tv.setText("\u1234");
... где «1234» - это значение Unicode для нужного вам символа.
Другой альтернативой является сначала сохранить файл в кодировке, совместимой с Unicode (например, UTF-8), затем использовать native2ascii
для преобразования этого файла в исходную кодировку (он преобразует любые символы вне диапазона в соответствующий Unicode-escape последовательность).
ИМЯ
native2ascii
- родной для ASCII преобразовательСИНТАКСИС
native2ascii [ options ] [ inputfile [outputfile]]
ОПИСАНИЕ
Java-компилятор и другие инструменты Java могут только обрабатывать файлы, содержащие Latin-1 или Unicode-кодировке (\udddd
запись) символы. native2ascii преобразует файлы, которые содержат другую кодировку символов, в файлы , содержащие символы символов Latin-1 или Unicode.Если выходной файл опущен, для вывода используется стандартный вывод. Кроме того, если входной файл опущен, для ввода используется стандартный ввод.
Это может быть педантичный комментарий, но официальная [Спецификация языка Java] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html) гласит: «Программы написаны в Юникоде ». Думаю, это означало бы, что вы не можете иметь * не-Unicode-символ * на Java, что бы это ни значило. Вы можете перефразировать вопрос. Терминология и наименования важны в этом бизнесе. :) –