#java #regex #text #ascii #non-ascii-characters
#java #регулярное выражение #текст #ascii #символы, отличные от ascii
Вопрос:
Я заметил, что существует разница между простой одинарной кавычкой '
и одинарной кавычкой в документе word ’
. Я попытался найти значения ASCII из онлайн-поиска значений ASCII для обеих букв. Я могу найти значение ASCII для первого, но я не могу найти ASCII для более позднего ( ’
).
Даже я пытался найти значение ASCII с помощью JAVA-программы, например:
public static void main (String[] args) throws java.lang.Exception{
char ch='’';
System.out.println((int)ch);
}
Программа Java также выдает ошибку при попытке подобным образом.
Итак, в чем проблема с ’
символом?
Одна вещь, которую я знаю, этот ’
символ может быть получен из документа MS Word путем ввода одинарной кавычки.
Символ может быть скопирован в любой редактор, после копирования в блокнот также символ останется прежним. Но если мы введем одинарную кавычку, она будет отображаться только как простая одинарная кавычка '
.
Итак, в основном, когда мы вводим программу в документе Word и копируем в IDE или где-то еще для ее выполнения. Тогда это будет проблемой, верно? Итак, как решить эту проблему?
Каким будет решение, кроме замены ’
на '
?
Эта проблема не связана конкретно с каким-либо языком. Это общая проблема, о которой должен знать каждый.
Примечательное редактирование:
public static void main (String[] args) throws java.lang.Exception{
char ch='’';
System.out.println((int)ch);
}
Который дает 8217 (как один из предложенных ответов)
Но все же как решить проблему?
Комментарии:
1. «Проблема» в том, что большинство символов unicode не могут быть представлены в наборах символов на основе ASCII? Что ж. Это, вероятно, останется нерешенным.
2. Вы можете представить U 2019 ПРАВОЙ ОДИНАРНОЙ КАВЫЧКОЙ в источниках Java ASCII, используя escape-код Unicode
u2019
.
Ответ №1:
В других ответах правильно указано, что ваш апостроф — это не символ ASCII, а символ Unicode, называемый ПРАВОЙ ОДИНАРНОЙ КАВЫЧКОЙ.
Проблема с наличием этого символа в исходном коде заключается в том, что ваш лексер / компилятор не распознает этот символ как начало или конец строки или что-либо еще, для чего используется апостроф на вашем языке. Таким образом, он не будет действовать как обычный апостроф в вашем исходном коде.
Вы уже сказали, что не хотите выполнять поиск и замену, поэтому вместо этого вы можете сделать так, чтобы ваш текстовый редактор использовал только обычные ASCII-апострофы.
Если вы используете Microsoft Word (который, я мог бы добавить, не очень хороший редактор кода), вы можете отключить «умные кавычки», чтобы обойти это. В Word 2007 и Word 2003 есть инструкции о том, как это сделать. Я протестировал это, и это действительно заставляет Word использовать только прямые апострофы.
В качестве альтернативы вы также можете использовать шрифт, который не содержит ПРАВИЛЬНОГО символа ОДИНАРНОЙ КАВЫЧКИ (если вы можете его найти).