1.
byte[] unicodeByte;
byte[] gb2312Byte = new String(new String(unicodeByte).getBytes("UTF-8"),"gb2312").getBytes();
2.恐怕没有办法吧。
byte[] unicodeByte;
byte[] gb2312Byte = new String(new String(unicodeByte).getBytes("UTF-8"),"gb2312").getBytes();
2.恐怕没有办法吧。
2好像不关java的事
byte[] arGB;
String strTemp=new String(arUnicode,"UTF-16);
arGB=strTemp.getBytes("GB2312");判断 数组头两位是否 FFFE,可确定是否Unicode编码.
其他的比较困难。
问: 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? 答: 这个问题的实现通常与各个JDBC driver的实现有关. 目前大多数JDBC driver采用本地编码格式来传输中文字符,例如中文字符"0x4175"会被转成"0x41"和"0x75"进行传输. 因此我们需要对JDBC driver返回的字符以及要发给JDBC driver的字符进行转换. 当用JDBC driver向数据库中插入数据时,需要先将Unicode转成native code; 当 JDBC driver从数据库中查询数据时,则需要将native code转换成Unicode. 下面给出了这两种转换的实现:
String native2Unicode(String s) { if (s == null || s.length() == 0) { return null; } byte[] buffer = new byte[s.length()]; for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) { c = s.charAt(i); byte []buf = (""+c).getBytes(); buffer[j++] = (char)buf[0]; buffer[j++] = (char)buf[1]; } else { buffer[j++] = s.charAt(i); } } return new String(buffer, 0, j); } 除使用以上两个方法之外,有些JDBC driver如果对jdbc driver Manager设置了正确 的字符集属性,以上2个方法就不需要了.
我的字节为:
FF FE 54 00 45 00 53 00 54 00 4B 6D D5 8B
文字为:TEST测试
但是输出确为空。
我的文件mytest.txt是用WIN2K记事本写的然后保存成 UNICODE 格式。
我的代码如下:
import java.util.*;
import java.io.*;
public class codetest
{
public static void main(String[] args)
{
byte[] content = null;
try
{
content = readFromFile("D:\\mytest.txt");
}
catch( IOException e )
{
content = new byte[0];
e.printStackTrace();
}
try
{
System.out.println( new String(new String(content).getBytes("UTF-8"),"gb2312") );
}
catch( Exception e )
{
System.out.println("read error");
}
}
public static byte[] readFromFile(String file_name) throws IOException
{
FileInputStream fin = new FileInputStream(file_name);
byte [] buf = new byte[fin.available()];
fin.read(buf);
fin.close();
return buf;
}
}
设unicode字符编码的byte数组为 b1
则gb2312的byte数组b2为:byte[] b2 = new String(b1,"Unicode").getBytes();
2.怎样才能自动识别BYTE数组中内容的编码格式
无法自动识别。
原因:byte数组装的都是0-255数字,对于指定的每个类别编码,都一种解释。
这种解释靠分析byte本身的数字是不可能的。所以,自动识别,是不可能的。
1.紧急求教,怎样将UNICODE编码的BYTE数组转变成GB2312的BYTE数组?
设unicode字符编码的byte数组为 b1
则gb2312的byte数组b2为:byte[] b2 = new String(b1,"Unicode").getBytes("gb2312");
2.怎样才能自动识别BYTE数组中内容的编码格式
无法自动识别。
原因:byte数组装的都是0-255数字,对于指定的每个类别编码,都一种解释。
这种解释靠分析byte本身的数字是不可能的。所以,自动识别,是不可能的。