Получите unicode значение символа

Есть ли какой-либо путь в Java так, чтобы я мог получить Unicode, эквивалентный из какого-либо символа? например.

Предположим метод getUnicode(char c). Вызов getUnicode('÷') должен возвратиться \u00f7.

67
задан Andrew Thompson 20 February 2015 в 02:41
поделиться

3 ответа

Вместо кодирования на utf-8 следует закодировать то, что когда-либо используется paypal для публикации. Он доступен под ключом 'charset' в форме paypal says.

Так что для меня сработал следующий код:

data = dict ([(k, v.encode (data ['charset'])) для k, v в data.items ()])

-121--2129897-

У меня небольшой опыт работы с CloudFoundry. Они были так любезны спонсировать веб-сайт GR8Conf, развернутый через их сервис. Для настройки SQL мне кажется, что простым решением является использование подключаемого модуля CloudFoundry и ввод

    cloudFoundry.db.schemaName="myName"

в файле config/CloudFounddry.groovy.

В файле config/DataSource.groovy вы должны иметь:

    production {
        dataSource {
            driverClassName = 'com.mysql.jdbc.Driver'
            dbCreate = "update"
            url = "jdbc:mysql://localhost/myName" // or url = "jdbc:mysql://${System.getProperty("dbHostName", "localhost")}/myName"
            dialect = 'org.hibernate.dialect.MySQLDialect'
            username = "myName_user"
            password = "myName_password"
        }
    }

(Я получил некоторые из этих сведений от: http://www.cloudfoundry.com/getting_started.html )

Я не думаю, что вы должны предоставить дополнительные скрипты SQL. То, что вы определяете в BootStrap, будет происходить при развертывании.

Что касается ценообразования, у меня нет идей. Я бы предложил вам написать в их поддержку, чтобы спросить.

На стороне: Веб-сайт www.gr8conf.org еще не запущен на EC2, но это потому, что я еще не понял, как создать резервную копию моей базы данных от EC2 до S3, и это довольно важно, потому что, когда EC2 экземпляр заканчивается, все в нем теряется, если не резервировать. / Сёрен

-121--4501549-

Вы можете сделать это для любого символа Java, используя один лайнер здесь:

System.out.println( "\\u" + Integer.toHexString('÷' | 0x10000).substring(1) );

Но это будет работать только для символов Юникода вплоть до Юникода 3.0, поэтому я уточнил, что вы можете сделать это для любого символа Java.

Поскольку Java была разработана до появления Unicode 3.1 и, следовательно, примитив символов Java недостаточен для представления Юникода 3.1 и выше: больше нет сопоставления «один символ Юникода с одним символом Java» (вместо этого используется чудовищный взлом).

Итак, вам действительно нужно проверить свои требования здесь: нужно ли поддерживать символ Java или любой возможный символ Юникода?

60
ответ дан 24 November 2019 в 14:39
поделиться

Если у вас Java 5, используйте char c = ...; Строка s = Строка.format ("\\ u% 04x", (int) c);

Если ваш источник не является символом Unicode ( char ), а является String, вы должны использовать charAt (index ) , чтобы получить символ Unicode в позиции с индексом .

Не используйте codePointAt (index) , потому что это вернет 24-битные значения (полный Unicode), которые не могут быть представлены только 4 шестнадцатеричными цифрами (требуется 6). См. документацию для объяснения .

[EDIT] Чтобы прояснить: в этом ответе используется не Unicode, а метод, который Java использует для представления символов Unicode (т.е. суррогатных пар), поскольку char - 16-битный а Unicode - 24 бит. Вопрос должен быть таким: «Как мне преобразовать char в 4-значное шестнадцатеричное число», поскольку это (на самом деле) не о Unicode.

33
ответ дан 24 November 2019 в 14:39
поделиться

Я нашел этот хороший код в Интернете.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Unicode {

public static void main(String[] args) {
System.out.println("Use CTRL+C to quite to program.");

// Create the reader for reading in the text typed in the console. 
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

try {
  String line = null;
  while ((line = bufferedReader.readLine()).length() > 0) {
    for (int index = 0; index < line.length(); index++) {

      // Convert the integer to a hexadecimal code.
      String hexCode = Integer.toHexString(line.codePointAt(index)).toUpperCase();


      // but the it must be a four number value.
      String hexCodeWithAllLeadingZeros = "0000" + hexCode;
      String hexCodeWithLeadingZeros = hexCodeWithAllLeadingZeros.substring(hexCodeWithAllLeadingZeros.length()-4);

      System.out.println("\\u" + hexCodeWithLeadingZeros);
    }

  }
} catch (IOException ioException) {
       ioException.printStackTrace();
  }
 }
}

Первоначальная статья

1
ответ дан 24 November 2019 в 14:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: