有关手机中文问题传输的解决办法
服务器到客户端:
----------------------------------------------------------------------
下面代码是服务器端把字符写到Client端,经过gbEncoding()方法,所有的字符编码成:\uXXXX.
----------------------------------------------------------------------
代码:--------------------------------------------------------------------------------
/**
* 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
*/
这段代码仅供参考:
//transfer code from GBK to iso-8859-1 (向数据库插入)
public String transferCode(String a) {
String b = "";
try {
b = new String(a.getBytes(),"iso-8859-1");
}
catch (java.io.UnsupportedEncodingException e) {
System.out.println("java.io.UnsupportedEncodingException !!!");
e.printStackTrace();
}
return b;
}
//transfer code from iso-8859-1 to GBK (从数据库读出)
public String transferCode8859toGBK (String a) {
String b = "";
try {
b = new String(a.getBytes("iso-8859-1"));
}
catch (java.io.UnsupportedEncodingException e) {
System.out.println("java.io.UnsupportedEncodingException !!!");
e.printStackTrace();
}
return b;
}