最近在处理xls文件时,有些单元格的内容有上标的.在Java程序里不知道如何知道有上标的,又如何把上标读出来呢?使用普通的poi,jxl获取这个单元格的内容,在控制台下输出结果变成了一个?
比如说内容里是Los Gallegos Nº 25 2D
打印在控制台是Los Gallegos N? 25 2D

解决方案 »

  1.   

    这个不是上标,这就是一个 Unicode 字符,编码为:U+00BA
    http://zh.wikibooks.org/w/index.php?title=Unicode/0000-0FFF&variant=zh-tw
    需要使用 UTF-8 编码格式才能显示出来。因为 Eclipse 的控制台是截获系统的输入输出流,在默认情况下 Windows 操作系统的输出流采用的是 GB18030 的编码格式,
    但是这个字符在 GB18030 中是无法正常显示的,所以以“?”取代。1,如果要在操作系统控制台上输出这个字符,需要使用 chcp 命令将控制台的代码页由 936 改为 UTF-8 的 65001,
        再将控制台显示的字体改为宋体或者新宋体,执行就可以正常显示了。2,将系统的输出流重定向到一个 UTF-8 的文件中:import java.io.IOException;
    import java.io.PrintStream;public class Test {
        
        public final static String SYSTEM_OUTPUTSTREAM_REDIRECT_FILE = "e:/test.txt";
        
        public final static String SYSTEM_OUTPUTSTREAM_ENCODING = "utf-8";
            
        static {
            redirectSystemOut();
        }    public static void main(String[] args) {
            System.out.println("Los Gallegos Nº 25 2D aa");
        }
        
        private static void redirectSystemOut() {
            PrintStream ps = null;
            try {
                ps = new PrintStream(SYSTEM_OUTPUTSTREAM_REDIRECT_FILE, SYSTEM_OUTPUTSTREAM_ENCODING);
                System.setOut(ps);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
      

  2.   

    最后把对应的字段改成nvarchar,插入,修改时带上N
    如果insert into xxxx(ttt) values(N'1123º3')
    最后显示在JSP的text里也可以显示这个样式.