String str = "第六世纪-http://down.c06.net";
StringBuffer sb=new StringBuffer();
for(int index=0;index<str.length();index++)
sb.append("&#"+(int)str.charAt(index)+";"); //将汉字字符转换成整形,即ISO-8859码。转换规则是什么?
out.print(sb.toString());
作者说可以通过这段程序将汉字转换为ISO-8859-1
又如何将一个ISO-8859码转换成汉字呢?

解决方案 »

  1.   

    (int)str.charAt(index),这个就是强制转换啦。普通的英文字符串可以直接强制转换成int类型的ASCII码,只是一个汉字占用两个字节,至于转换结果是不是“ISO-8859”编码,我也不知道,不敢误导你呵呵
      

  2.   

    整形是unicode码,java char类型跟unicode标准形式utf-16完全对应,并且是高位在前,低位在后。同时表示对iso8859不是很了解,请了解iso8859的解释下?
      

  3.   

    iso-8859-1是单字节字符,不支持中文。你的阴谋不能实现
      

  4.   

    ISO标准请参考http://zh.wikipedia.org/wiki/%E5%9C%8B%E9%9A%9B%E6%A8%99%E6%BA%96%E5%8C%96%E7%B5%84%E7%B9%94其中ISO/IEC 8859-1  Information technology -- 8-bit single-byte coded graphic character sets - Part 1: Latin alphabet No. 1  明确表示iso8859-1为8-bit表示1个字符。
      

  5.   

    我问的是: (int)str.charAt(index)  这个将一个汉字字符转换成了整形,这个转换机制是什么样的?反过来,给出一个数字,我如何知道他对应哪个数字?
      

  6.   

    楼主复习一下ascii码吧。汉字也是一样的原理,只是它固定每个字占2个字节。
      

  7.   


    String str = "第六世纪-http://down.c06.net";
    StringBuffer sb=new StringBuffer();
    for(int index=0;index<str.length();index++)
    sb.append("&#"+(int)str.charAt(index)+";"); //将汉字字符转换成整形,即ISO-8859码。转换规则是什么?
    out.print(sb.toString());
    作者说可以通过这段程序将汉字转换为ISO-8859-1
    这段代码是把汉字转换成unicode引用,&#后面跟1个10进制值表示一个unicode字符。你把一个汉字赋给一个int就知道是哪个数字了public static void main(String... args){
          int i='汉';
          System.out.println(i);
        }
    ---------- JAVA ----------
    27721输出完成 (耗时 0 秒) - 正常终止
      

  8.   

    这段代码并没有将汉字转为ISO-8859-1
    只是把字符按char位置转成字符编码而已
    而且,按他这个做法,只能处理GBK编码,GBK编码一个汉字占用2字节
    如果是UTF编码,我怀疑这个函数工作的正常性
      

  9.   


    不懂不要乱讲,什么GBK,明明是 unicode
      

  10.   

    我哪里说过这个不是unicode了
    这个函数只是显示字符的unicode编码,那我说它是字符编码有不对吗?
    我只是说这个函数并不是用来转88591的,不知道你在爆个什么劲...
      

  11.   

        private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。   
           String str = new String();  
           str += ch;  
           try {  
                byte[] bytes = str.getBytes("GB2312");  
               if (bytes.length < 2)  
                    return 0;  
             //这里不理解,如果有理解下面这段代码的话,发我邮箱[email protected],感激不尽.
              return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff);  
            } catch (Exception e) {  
                return 0;  
           }  
        }