Отображение всего ORACLE 8-битных CHARSETS в UNICODE - PullRequest
1 голос
/ 20 декабря 2011

Я поддерживаю веб-приложение Java EE для базы данных Oracle с восьмибитной кодировкой.

Приложение будет использоваться из-за границы, и я хочу иметь возможность проверять строки - например, с помощью регулярных выражений UNICODE, и оба изJava и из Javascript - чтобы увидеть, вписываются ли они в базу данных CHARSET.

Одна функция в GDK - набор разработчика глобализации - дает эквивалентное имя Java для набора символов Oracle - я думаю, что это был ISO-8859-15-,Но я не уверен, что соответствие будет точным.

То, что я хотел, это отобразить весь набор символов - НЕ ИСО ..., но один символ ORACLE за символом для использования как из Java, так и из Javascript,даже для отображения точек UNICODE и для отделения контрольных символов от печатных.

В GDK Oracle есть функция?

Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2011

Я думаю, что нашел это!(Эврика!)

Небольшая программа JAVA JDBC привела именно к символам в ISO-8859-15, которые не соответствуют ISO-8859-1 (кстати, я узнал, что ISO-8859-1занимает от 0x00 до 0xff в UNICODE).

Выход программы:

CHR: 164 UNICODE: знак 8364

CHR: 166 UNICODE: 352

CHR: 168 UNICODE: 353

CHR: 180 UNICODE: 381

CHR: 184 UNICODE: 382

CHR: 188 UNICODE: 338

CHR:189 ЮНИКОД: 339

CHR: 190 ЮНИКОД: 376

Программный код (вообще не использует GDK):

ПРИМЕЧАНИЕ: оператор "SELECT CHR (я использую nchar_cs)"FRU DUAL "просто вернул те же цифры ... ПОЧЕМУ?

  for(int i=0; i<256; i++)
  {
    Statement select = con.createStatement();
    ResultSet result = select.executeQuery("select CHR(" + i +") from DUAL");
    while(result.next())
    {
      int unicodePoint = result.getString(1).codePointBefore(1);
      //int unicodePoint = result.getString(1).codePointAt(0);
      if (unicodePoint != i)
        System.out.println("CHR: " + i + "\tUNICODE: " + unicodePoint);
    }
    result.close();
    result = null;
    select.close();
    select = null;
  }
...