gps设备。gt200协议。用java开发怎么servlet接收中文乱码数据。我servlet接收中文乱码的全是乱码!

浅谈Java程序和数据库交互出现乱码该怎么解决_java博客_新浪博客
浅谈Java程序和数据库交互出现乱码该怎么解决
JAVA程序与数据库交互时经常会碰到出现乱码的问题,该怎么办?这问题是我们常常都会遇见的,每次遇见总让我头疼无比,那么怎么解决这些问题呢,结合本人在开发当中遇上的实际问题来跟大家说说该怎么解决这个问题。
1.通过jdbc直连方式,连接Mysql数据库,从程序向数据库中写入数据出现的乱码解决方案。
当通过程序向Student表中写入一条数据时,写入数据库的内容会产生乱码。
&写入数据库出现乱码
解决方案:
1。创建数据库的时候:
CREATE DATABASE `Db`
CHARACTER SET 'utf8 '
COLLATE 'utf8_general_ci ';
2.建表的时候:
CREATE TABLE `TableA` (
`ID` varchar(40) NOT NULL default ' ',
`UserID` varchar(40) NOT NULL default ' ', )
ENGINE=InnoDB DEFAULT CHARSET=utf8;
但是本人感觉关系不是很大,不过可以作为一种尝试手段。
3.该方案行之有效,就是修改Mysql安装目录的配置文件
&修改Mysql安装目录的配置文件
需要修改my.ini中两个位置的编码,
设置后,通过命令重启服务
命令重启服务
最终问题解决。
2.如果是通过jdbc从mysql数据库读取数据出现乱码,但是数据库中数据本身并没有出现乱码,那么可以使用在url中加参数的解决方案。
Url写法如下:
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
3.如果将url中的localhost换成IP地址,出现如下问题:
报错:1130-host ... is not allowed to connect to this MySql
解决方法:
1。 改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改
"mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql&
mysql&update user set host = '%' where user =
刷新授权 ,该行代码必须有。。FLUSH PRIVILEGES;
4.JDBC-ODBC桥连方式从数据库中读取数据出现乱码解决方案
不要直接读取,可以使用如下方式转换读取,问题解决
String stuname=new String(rs.getBytes(2),"utf-16le");
结语:JDBC和数据库交互产生乱码是开发中经常遇到的棘手问题,希望这里的总结可以帮助到您。​
PS:JAVA新手交流群:,欢迎大家来交流JAVA相关问题
博客等级:
博客积分:0
博客访问:28,712
关注人气:0
荣誉徽章:2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。系统发送数据代码:socket = new Socket(SysConfigInfo.getConfigInfo().getMsgIp(),
SysConfigInfo.getConfigInfo().getMsgPort());outStream = new DataOutputStream(socket.getOutputStream());//优先级outStream.writeInt(nOrder);//动作outStream.writeInt(nAction);//类型outStream.writeInt(nMode);outStream.flush();outStream.close();outStream =socket.close();接收socket的数据用C写的,现在需要用java写,如下:public ServerThread(Socket s) {
//接收receiveServer传来的套接字
this.m_ClientRequest =
InputStreamR
OutputStreamW
//初始化输入、输出流
reader = new InputStreamReader(m_ClientRequest.getInputStream());
writer = new OutputStreamWriter(m_ClientRequest.getOutputStream());
//out = new PrintWriter(m_ClientRequest.getOutputStream(),true);
m_Input = new BufferedReader(reader);
m_Output = new PrintWriter(writer,true);
catch(IOException e)
System.out.println(e.getMessage());
} }public void run() {
String strSql =
char [] buffer = new char[8192];
String sReturn =
int nDataL
Msg = new ShowMsg("数据处理线程启动:" + getName());
//读取客户端发送的数据
nDataLen = m_Input.read(buffer);
if(nDataLen & 0 )
//strSql = String.valueOf(buffer,0,nDataLen - 1 );
strSql = buffer.toString();
byte[] tmp = strSql.getBytes();
//System.out.println("" +tmp);
for(int i = 0; i & tmp. i ++){
//out.print(tmp);
System.out.println("" + String.valueOf(tmp));
还是那句老话,统一编码即可
最佳分辨率
OpenSource
Code & 2002-20

我要回帖

更多关于 java接收参数乱码 的文章

 

随机推荐