【问题标题】:Displaying whole ORACLE 8-bit CHARSETS in UNICODE以 UNICODE 显示整个 ORACLE 8 位字符集
【发布时间】:2011-12-20 11:53:10
【问题描述】:

我针对一个八位字符集 oracle 数据库维护一个 Java EE Web 应用程序。

该应用程序将在国外使用,我希望能够检查字符串 - 例如使用 UNICODE 正则表达式,以及来自 Java 和 Javascript - 以查看它们是否适合数据库 CHARSET。

GDK 中的一个函数 -globalization developer kit- 给出了 oracle 字符集的等效 Java 名称 - 我认为它是 ISO-8859-15-。但我不确定通信是否准确。

我想要的是显示整个字符集 -NOT ISO...,但 ORACLE one- char by char 可同时用于 Java 和 Javascript,甚至显示 UNICODE 点并将控制字符与可打印字符区分开来那些。

Oracle 的 GDK 中有为此目的的函数吗?

谢谢。

【问题讨论】:

    标签: oracle character-encoding globalization


    【解决方案1】:

    我想我找到了! (尤里卡!)

    一个小的 JAVA JDBC 程序导致 ISO-8859-15 中的字符与 ISO-8859-1 完全不同(顺便说一下,我了解到 ISO-8859-1 在 UNICODE 中占用从 0x00 到 0xff )。

    程序输出:

    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 UNICODE:339

    CHR:190 UNICODE:376

    程序代码(根本不使用GDK):

    注意:语句“SELECT CHR(i using nchar_cs) FROM 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;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 2017-12-13
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2012-06-07
      相关资源
      最近更新 更多