在vbscript中,asc()用于返回参数的ascii码...但是如果我这样写asc("我"),返回的是一个负数..由于汉字是双字节的..应该写成ascw("我").在java中..可以这样写 String s="我";int ch=(int)s.charAt(0);这里ch和ascw("我")的值相同..但是区位码算法中,使用的是asc..在java中,我该怎么做才能使得返回的值和asc("我")相同呢....

解决方案 »

  1.   

    没人回答..哭.....
    这样吧..我说具体点..
    现在我们大四有信息采集...需要查找汉字区位码..呵呵..我们都是在网上查询..其实也可
    以自己写的.....
    首先用html+vbscript可以完成(网上一般都是这样)
    <htmL>
    <head>
    <title>区位码</title>
    </head>
    <script type="text/vbscript">
    function getqw(ch)
    casc=asc(ch)
     用ascw(ch)才返回真正的值,和java写的相同
    if casc<0 then casc=casc+65535+1
    if casc>255 then
    b2=right("0"&((casc and 255)-160),2)
    b1=right("0"&(int(casc/256)-160),2)
    getqw=ch & " "&b1&b2 &" "
    else
    getqw=ch
    end if
    end FunctionFunction show
    newStr=""
    For i=1 To Len(myform.name.value)
    newStr=newStr & getqw(Mid(myform.name.value,i,1))
    Next
    myform.qw.value=newStr

    End function</script>
    <body>
    <fieldset width=250>
    <legend><b>区位码汉字系统</b></legend>
    <form name="myfrom" id="myform">
    <b>请输入的姓名:</b>&nbsp;&nbsp;<input type="text" size="20" id="name">&nbsp;&
    nbsp;<input type="button" value="查看" 
    onclick=show><br>
    <b>姓名区位码为:</b>&nbsp;&nbsp;<input type="text" size="28" id="qw">
    </fieldset>
    </body>
    </html>想用java模拟一个...在vbscript中.asc(string s)是返回s的ascii码..但是对于汉字,返
    回的却是一个负数..在java中,如果我们像获得一个字符的ascii码,一般这样做..
    String s="赵";
    int ascii=(int)s.charAt(0);
    不够ascii是个正数....而asc("赵")返回的是个负数...哪位仁兄知道,在java里面怎么实
    现呢?
    这是我写的...
    import java.util.*;
    public class Main{
    private static String name,newStr;
    public static void main(String args[]){
    Scanner cin=new Scanner(System.in);
    System.out.print("请输入您的姓名:");
    name=cin.nextLine();
    for(int i=0;i<name.length();i++){
    newStr=getQW(name.substring(i,i+1));
    System.out.println(newStr);
    }
    }
    public static int getAscii(String s){
    int i=0;
    for(int j=0;j<s.length();j++){
    i=(int)(s.charAt(i));
    }
    return i;
    }
    public static String getQW(String str){
    String str1,temp1,str2,temp2,result;
    int asc=getAscii(str); //返回的是一个正数
    if(asc<0){
    asc=asc+65535+1;
    }
    if(asc>255){
    temp2="0"+((asc&255)-160);
    str2=temp2.substring(temp2.length()-2);
    temp1="0"+((int)(asc/256)-160);
    str1=temp1.substring(temp1.length()-2);
    result=str+str1+str2; }
    else
    result=str;
    return result;
    }}
      

  2.   

    用String的getBytes() 方法试试
      

  3.   

    String s="我";byte ch=(byte)s.charAt(0);
    试试看