Хитрый специальный символ одинарной кавычки

#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 использовать только прямые апострофы.

В качестве альтернативы вы также можете использовать шрифт, который не содержит ПРАВИЛЬНОГО символа ОДИНАРНОЙ КАВЫЧКИ (если вы можете его найти).