考生通行证 注册|考生通|忘记密码 使用帮助·加入收藏

 首页 > 计算机 > 正文
有关手机中文问题传输的解决办法
发布时间:2008-06-16 09:21:12   主站: www.kaosheng.com

/**
* Write the String data
*
* @param out
* @param value
*/
public static void writeUnicode(final DataOutputStream out, final String value) throws ActionException {
try {
final String unicode = StringFormatter.gbEncoding( value );
final byte[] data = unicode.getBytes();
final int dataLength = data.length;

System.out.println( "Data Length is: " + dataLength );
System.out.println( "Data is: " + value );
out.writeInt( dataLength );
out.write( data, 0, dataLength );
} catch (IOException e) {
throw new ActionException( IMDefaultAction.class.getName(), e.getMessage() );
}
}
--------------------------------------------------------------------------------

----------------------------------------------------------------------
以下代码是gbEncoding()方法,把双字节字符转换成\uXXXX,ASIIC码在前面补00。
----------------------------------------------------------------------
/**
* This method will encode the String to unicode.
*
* @param gbString
* @return
*/

代码:--------------------------------------------------------------------------------
public static String gbEncoding( final String gbString ) {
char[] utfBytes = gbString.toCharArray();
String unicodeBytes = "";
for( int byteIndex = 0; byteIndex < utfBytes.length; byteIndex ++ ) {
String hexB = Integer.toHexString( utfBytes[ byteIndex ] );
if( hexB.length() <= 2 ) {
hexB = "00" + hexB;
}
unicodeBytes = unicodeBytes + "\\u" + hexB;
}
System.out.println( "unicodeBytes is: " + unicodeBytes );
return unicodeBytes;
}
--------------------------------------------------------------------------------

----------------------------------------------------------------------
在客户端收到服务器的数据,先将其一个一个字符解码。双字节显示正常。

----------------------------------------------------------------------

代码:--------------------------------------------------------------------------------
/**
* This method will decode the String to a recognized String
* in ui.
* @param dataStr
* @return
*/
private StringBuffer decodeUnicode( final String dataStr ) {
int start = 0;
int end = 0;
final StringBuffer buffer = new StringBuffer();
while( start > -1 ) {
end = dataStr.indexOf( "\\u", start + 2 );
String charStr = "";
if( end == -1 ) {
charStr = dataStr.substring( start + 2, dataStr.length() );
} else {
charStr = dataStr.substring( start + 2, end);
}
char letter = (char) Integer.parseInt( charStr, 16 ); // 16进制parse整形字符串。
buffer.append( new Character( letter ).toString() );
start = end;
}
return buffer;
}
--------------------------------------------------------------------------------

----------------------------------------------------------------------
客户端到服务器:
----------------------------------------------------------------------
客户端使用下面方法把手机端的字符编码成ISO-8859-1,传给服务器。
----------------------------------------------------------------------

代码:--------------------------------------------------------------------------------
/**
* write the String data
* @param value
* @param outData
*/
private void writeSjis(DataOutputStream outData, String value) {
try {
byte[] data = null;
// data = ( value ).getBytes( "UTF-8" );
data = ( value ).getBytes( "ISO8859_1" );
outData.writeInt(data.length);
outData.write(data, 0, data.length);

System.out.println(" data.length: " + data.length);
System.out.println(" data.value: " + value);
} catch (Exception ex) {
System.out.println(" write error ");
ex.printStackTrace();
}
}
服务器端收到客户端字符流,是用下面方法将其转为UTF-8,以后的操作都是基于UTF-8编码。SQLServer可能会由于内吗不通有不同的变换,所以存取数据库是还要是具体的DB内码作相应的处理。
----------------------------------------------------------------------

代码:--------------------------------------------------------------------------------
/**
*
* @param iso
* @return
*/
public static String isoToUtf( final String iso ) {
String utfString = iso;
if( iso != null ) {
try {
utfString = new String( iso.getBytes( "ISO-8859-1" ), "UTF-8" );
} catch ( UnsupportedEncodingException e ) {
utfString = iso;
}
} else {
utfString = "";
}
return utfString;
}


注:
本方法应该不是最有效的,但是只要手机支持unicode的gb2312编码,应该都可以显示正常。

来源于考试大网

 
  现在有 人对本文发表评论 查看所有评论 用户名: 密码: 匿名



 
 
资料中心
推荐学校 推荐课程
wqer
沈阳橙色学校
北文学校
新动力教育
北京中大英才教育咨询中心
上海郎恩进修学校
环球友好国际教育
北京联合大学广告学院
上海荐才职业技能培训中心
上海恩波学校
知识交流  
试题下载  
在Oracle9i中,如何监...
拥有归档日志如何恢复一个丢失...
批量删除Oracle数据库的...
批量删除Oracle数据库的...
分析Oracle数据库日志文...
分析Oracle数据库日志文...
sql.bsq与数据库的创建
精彩资讯  
“梅勒斯”成批下载盗号木马 窃取网游账号
Youtube让网民预听发贴 鼓励三思而后提...
辽宁电信企业经理盗窃IP账号获刑13年
四大高招教你如何管好加密软件
“中国最牛政府网站”蹿红网络
华硕计划推触摸面板易PC
三年投资800亿元 电信全方位改造C网
Google Gmail新功能Goggles...
IBM中阶 Unix开始采用Power 6处...
捅破下载软件公司的盈利窗户纸
about us | 网站简介 | 广告服务 | 联系我们 | 版权&免费声明 | 网站地图 | 合作加盟 | 申请友情链接 | 网站帮助 | 友情联盟 | 意见留言
版权所有:中国考生网    互联网证书:辽ICP证020145号