转码,都转过了,方法如下:
public String getStr(String str)
{
try
{
String temp_p = str;
byte[] temp_t = temp_p.getBytes("ISO8859_1");
String temp =new String(temp_t,"GBK");
return temp;
}
catch(Exception e)
{
}
return "null";
}
/////////////////////////////////////////////
GBK也试过了,GB2312、UTF-8都试过了,照样时乱码,谁还有招吗,多谢!
public String getStr(String str)
{
try
{
String temp_p = str;
byte[] temp_t = temp_p.getBytes("ISO8859_1");
String temp =new String(temp_t,"GBK");
return temp;
}
catch(Exception e)
{
}
return "null";
}
/////////////////////////////////////////////
GBK也试过了,GB2312、UTF-8都试过了,照样时乱码,谁还有招吗,多谢!
{
try
{
String temp_p = str;
//
System.out.println(str);
byte[] temp_t = temp_p.getBytes("ISO8859_1");
String temp =new String(temp_t,"GBK");
//
System.out.println(str);
return temp;
}
catch(Exception e)
{
}
return "null";
}你先看看两个字串的输出,然后试着将编码改成
String temp =new String(temp_p.getBytes("ISO-8859-1"),"GBK");
必须要知道你得到的是什么字符,转成什么字符。别急,慢慢来。
那么问题主要在于,我从数据库中取出的汉字是什么编码的,由于是在winNT4的英文版操作系统下,所以我猜想应该是ANSI的编码,那么该如何转化呢?
/*
* gb2312 的标准解码技术:
* Tomcat3.*,jdk1.2.*上测试通过
* author:hello_world
*/
public String encodeForGB2312(String str)
int str_len = str.length();
char[] ch_arr = new char[str_len * 5];
int index = 0;
Character ch;
byte aPart;
for (int i = 0; i < str_len; i++)
{
ch = new Character(str.charAt(i));
if (ch.hashCode() >= 0 && ch.hashCode() <= 127)
{
ch_arr[index++] = ch.charValue();
} else
{
ch_arr[index++] = '%';
String b = Integer.toHexString(ch.hashCode());
ch_arr[index++] = b.toUpperCase().charAt(0);
ch_arr[index++] = b.toUpperCase().charAt(1);
}
}
return new String(ch_arr, 0, index);
/*****************************************/
是将GB2312码转化成其他码?还是将其他码(是否是特定的码)转化成GB2312码?