在程序中设置字符集为UTF8、OR GB2312 SET NAMES 'GB2312' SET CHARACTER SET GB2312
SET CHARACTER SET GB2312 这个放在哪?比如我的sql 是 select * from name where 1=1
放在你的程序中,连接MYSQL成功后,紧接着运行
那就设置UTF8 OR GBK试试
package cn.tohot.xmkf.wjczj;import java.io.UnsupportedEncodingException;import junit.framework.TestCase;public class TestCharset extends TestCase { public void testChar(){
try { String a = new String("誌".getBytes(),"GB2312"); System.out.println(a); a = new String(a.getBytes("GBK"),"GBK");//改这 System.out.println(a); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 来个测试例子: 第2个println要输出正确的“誌”,只能改 a = new String(a.getBytes("GBK"),"GBK"); 怎么搞法?
说明白点就是 String a = new String("誌".getBytes(),"GB2312"); //这里添加处理代码 //............ //............ System.out.println(a); //最后显示 誌不管你什么代码 只要最后显示正确即可~~
可能有两个原因: 第一是字符编码和校对集问题,若是GBK编码,校对集也要正确,请参考我的Blog http://blog.csdn.net/jackem/archive/2008/07/25/2710686.aspx另外一个原因是5.0的mysql的JDBC驱动程序有个bug,当你的编码是Asiic编码的时候,在驱动程序里面会进行编码转换导致某些字出错,我们是修改了JDBC驱动代码解决的,你可以Debug一下看看是不是这个问题,好象是在com.mysql.jdbc.SingleByteCharsetConverter 这段代码里. 另外确认一下你的数据库编码是否正确,可以使用 show variables like 'char%'; show variables like 'coll%'; 检查一下编码是否真的是GBK
insert @t select N'昇'
select * from @t
/*
Name
----------
昇
*/
试试这个方法: public String toCharSet(String str)
{
if(str==null)
return "";
try
{
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b); }
catch (Exception e)
{
e.printStackTrace();
}
return str;
}
SET NAMES 'GB2312'
SET CHARACTER SET GB2312
public void testChar(){
try {
String a = new String("誌".getBytes(),"GB2312");
System.out.println(a);
a = new String(a.getBytes("GBK"),"GBK");//改这
System.out.println(a);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
来个测试例子:
第2个println要输出正确的“誌”,只能改 a = new String(a.getBytes("GBK"),"GBK"); 怎么搞法?
连接MYSQL,设置字符集为UTF8,取表中字段的内容,看看结果
String a = new String("誌".getBytes(),"GB2312");
//这里添加处理代码
//............
//............
System.out.println(a); //最后显示 誌不管你什么代码 只要最后显示正确即可~~
http://blog.csdn.net/jackem/archive/2008/07/25/2710686.aspx另外一个原因是5.0的mysql的JDBC驱动程序有个bug,当你的编码是Asiic编码的时候,在驱动程序里面会进行编码转换导致某些字出错,我们是修改了JDBC驱动代码解决的,你可以Debug一下看看是不是这个问题,好象是在com.mysql.jdbc.SingleByteCharsetConverter 这段代码里.
另外确认一下你的数据库编码是否正确,可以使用
show variables like 'char%';
show variables like 'coll%';
检查一下编码是否真的是GBK
mysql>SET NAMES 'utf8';
mysql>select * from mytable limit 0,10;
mysql>SET NAMES '你的字符集';
mysql>select * from mytable limit 0,10;
。。 2、
// 数据链接部分自己写吧。
$link = 你的数据库链接;
mysql_select_db($mydb, $link); mysql_query("SET NAMES 'utf8'",$link); //关键是这里,我给了个utf8字符集,你用utf8替换成你知道的字符集. $sql = "select * from mytable limit 0,10 ";
$results = mysql_query($sql,$link);
$allcount = $this->num_rows($results);
if($allcount > 0)
{
for(;$count < $allcount; $count++)
{
$data[$count] = $this->fetch_array($results);
}
}
print_r($data);