Java開發WAP中文問題解決方案

 
<%@   page   language="java"%>   
  
<%@   page   contentType="text/vnd.wap.wml"   pageEncoding="UTF-8"%>   
  
<?xml   version="1.0"   encoding="UTF-8"?>   
  
<!DOCTYPE   wml   PUBLIC   "-//WAPFORUM//DTD   WML   1.1//EN"   "http://www.wapforum.org/DTD/wml_1.1.xml">   
  
<wml>   
  
<card>   
  
</card>   
  
</wml>   

 

對於輸出頁面上的中文,寫一個類來轉換成UTF,這樣就解決了在不同平臺顯示中文的問題,而且移動的網關也是utf-8的。

 

package cn._5znb.j2ee.tag.base;

import java.io.IOException ;
import java.io.UnsupportedEncodingException ;

/** *//**
 * 轉化字符的類
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: sinotec</p>
 * 
@author 唐韌
 * 
@version 1.0
 
*/

public class ConvertString
...{
    
private static ConvertString cs = null ;
    
private ConvertString ()
    
...{
    }


    
public static ConvertString getInstance ()
    
...{
        
if ( cs == null )
        
...{
            cs 
= new ConvertString () ;
        }

        
return cs ;
    }


    
public static String IsoConvertGb ( String strIn )
    
...{
        String strOut 
= null ;
        
if ( strIn == null || ( strIn.trim () ).equals ( "" ) )
        
...{
            
return strIn ;
        }

        
try
        
...{
            
byte[] b = strIn.getBytes ( "ISO8859_1" ) ;
            strOut 
= new String ( b , "GBK" ) ;
        }

        
catch ( Exception e )
        
...{}
        
return strOut ;
    }


    
public static String ConvertString ( String s )
    
...{
        StringBuffer ustring 
= new StringBuffer () ;
        s 
= IsoConvertGb ( s ) ;
        
for ( int i = 0 ; i < s.length () ; i++ )
        
...{
            Character c 
= new Character ( s.charAt ( i ) ) ;
            
if ( c.toString ().getBytes ().length == 1 )
            
...{
                ustring.append ( c.charValue () ) ;
            }

            
else
            
...{
                
int a = ( int ) c.charValue () ;
                String temp 
= new String ( "&#x" + Integer.toHexString ( a ) +
                                           
";" ) ;
                ustring.append ( temp ) ;
            }

        }

        
return ustring.toString () ;
    }


    
public String getStr ( String str )
    
...{
        
try
        
...{
            String temp_p 
= str ;
            
byte[] temp_t = temp_p.getBytes ( "ISO8859-1" ) ;
            String temp 
= new String ( temp_t ) ;
            
return temp ;
        }

        
catch ( Exception e )
        
...{

        }

        
return "null" ;
    }


    
static public String convertUTF8String2Unicode ( String instr )
        
throws IOException
    
...{
        
int charindex = instr.length () ;
        
int actualvalue ;
        
int inputvalue ;
        StringBuffer sbtemp 
= new StringBuffer () ;

        
for ( int i = 0 ; i < charindex ; )
        
...{
            actualvalue 
= -1 ;
            inputvalue 
= instr.charAt ( i++ ) ;

            inputvalue 
&= 0xff ;

            
if ( ( inputvalue & 0x80 ) == 0 )
            
...{
                actualvalue 
= inputvalue ;
            }

            
else if ( ( inputvalue & 0xF8 ) == 0xF0 )
            
...{
                actualvalue 
= ( inputvalue & 0x1f ) << 18 ;

                
int nextByte = instr.charAt ( i++ ) & 0xff ;
                
if ( ( nextByte & 0xC0 ) != 0x80 )
                
...{
                    
throw new IOException ( "Invalid UTF-8 format" ) ;
                }

                actualvalue 
+= ( nextByte & 0x3F ) << 12 ;

                nextByte 
= instr.charAt ( i++ ) & 0xff ;
                
if ( ( nextByte & 0xC0 ) != 0x80 )
                
...{
                    
throw new IOException ( "Invalid UTF-8 format" ) ;
                }

                actualvalue 
+= ( nextByte & 0x3F ) << 6 ;

                nextByte 
= instr.charAt ( i++ ) & 0xff ;
                
if ( ( nextByte & 0xC0 ) != 0x80 )
                
...{
                    
throw new IOException ( "Invalid UTF-8 format" ) ;
                }

OutliningIndi
發佈了11 篇原創文章 · 獲贊 1 · 訪問量 3959
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章