我在一个select查询中调用了一个sql function,但是返回的中文数据是乱码, sql 如下: select getNameById from office;  
  奇怪的是在另一个select中同样调用了此sqlfunction, 但是该查询返回的正确的中文显示.
  我mysql数据库的字符集设为gb2312,  两个查询用的是同一个jdbc连接,jdbc连接设的字符集也是gb2312. 我debug发现,在乱码的ResultSet中field的类型为US_ACSII 而正常息显示中文的查询中返回的ResultSet对应sqlfunction的字段类型为EUC_CA. 
  哪位高人能告诉我这是怎么一回事阿?

解决方案 »

  1.   

    如果表是用中文字符集,java的URL用的也是指定用unicode和用中文字符集,而且mysql也是默认字符集为中文,一般就没有乱码问题了。楼主的mysql的my.ini里面字符集有没有修改?或者程序不纯粹是java+mysql,而是java+某种服务器+mysql,那服务器软件没有指定中文字符集?
      

  2.   

    我在配制mysql的时候,就把缺省字符集设为gb2312,在建表的时候没有特别指定字符集.jdbc 的url用的是unicode,字符集是gb2312, my.ini的字符集是gb2312没有变过.程序是个纯粹的java和jdbc程序,没有涉及应用服务器
      

  3.   

    应该是表的或字段的charset设置错误,导致出现乱码。