当前位置: 技术问答>java相关
谁能帮我解决让我精神崩溃的中文问题?
来源: 互联网 发布时间:2015-05-11
本文导语: 我使用com.inet.tds.TdsDriver的JDBC驱动来访问SQL SERVER2000,FORM提交以后,明明看见在网页中读到的中文字符串都一切正常,插入到数据库中以后就不行了。 全变成了“?????”。 我用getBytes("ISO8858-1")的方法也试过了...
我使用com.inet.tds.TdsDriver的JDBC驱动来访问SQL SERVER2000,FORM提交以后,明明看见在网页中读到的中文字符串都一切正常,插入到数据库中以后就不行了。
全变成了“?????”。
我用getBytes("ISO8858-1")的方法也试过了,还是不行。而且基本上我能找到的方法都试过了,但是存进数据库里面的还是这个让人崩溃的“????”
还有更加奇怪的事,我什么都不更改,如果是使用mysql的数据库,那么又一切正常。
请大家帮帮我吧,我已经碰了一鼻子的灰了。
再解决不了问题,我可能就要去砸电脑了。
全变成了“?????”。
我用getBytes("ISO8858-1")的方法也试过了,还是不行。而且基本上我能找到的方法都试过了,但是存进数据库里面的还是这个让人崩溃的“????”
还有更加奇怪的事,我什么都不更改,如果是使用mysql的数据库,那么又一切正常。
请大家帮帮我吧,我已经碰了一鼻子的灰了。
再解决不了问题,我可能就要去砸电脑了。
|
第一种可能:
FORM中得来的数据是ISO8859-1,从网页中看来是正常的,是因为你的WEB SERVER可能已经将它转为GB2312了,即
new String(thePara.getBytes("ISO8859-1"),"GB2312"),
在将其加入数据库前可以:
sql = new String(sql.getBytes("GB2312"),"ISO8859-1")
或者new String(sql.getBytes(),"ISO8859-1")
第二种可能:
你说mysql是正常的。因为:
mysql默认的ENCODING刚好是ISO8859-1,那么FORM中得来的数据是ISO8859-1,那么加入MSSQL时试一试将转为GB2312,
new String(sql.getBytes("ISO8859-1"))
FORM中得来的数据是ISO8859-1,从网页中看来是正常的,是因为你的WEB SERVER可能已经将它转为GB2312了,即
new String(thePara.getBytes("ISO8859-1"),"GB2312"),
在将其加入数据库前可以:
sql = new String(sql.getBytes("GB2312"),"ISO8859-1")
或者new String(sql.getBytes(),"ISO8859-1")
第二种可能:
你说mysql是正常的。因为:
mysql默认的ENCODING刚好是ISO8859-1,那么FORM中得来的数据是ISO8859-1,那么加入MSSQL时试一试将转为GB2312,
new String(sql.getBytes("ISO8859-1"))