smartupload的问题:输入中文为什么存到数据库当中是乱码?--------十万火急,丢工作了!! 把你的连接字符串改成这样~jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=gb2312 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个东西只和数据库的编码有关oracle得是utf-8不过 存到数据库当中是乱码 没什么吧只要你读出来显示是中文不就行了终极的办法是存字节然后取出来转化成中文 to jokerjava(冷血) :能说的详细些吗?比如说我这种情况到底应该如何改的问题 to: accp(accp)我在连接的bean中这样写的: String url ="jdbc:mysql://ip地址/数据库名?user="+use+"&password="+pass+"&useUnicode=true&characterEncoding=gb2312"; 编码转换啊~~~和JSPSMARTUPLAOD没有关系~~我也遇到过此类问题!!给你一个BEAN!!package com.db;import java.lang.*;import java.util.*;import java.lang.Integer;import java.sql.*;public class CharCode{public static String UnicodeToChinese(String s){ try{ if(s==null||s.equals("")) return ""; String newstring=null; newstring=new String(s.getBytes("ISO8859_1"),"gb2312"); return newstring; } catch(Exception e) { return s; } } public static String ChineseToUnicode(String s){ try{ if(s==null||s.equals("")) return ""; String newstring=null; newstring=new String(s.getBytes("gb2312"),"ISO8859_1"); return newstring; } catch(Exception e) { return s; } } } 入库前调用UnicodeToChinese方法!!不行给我发邮件!! to donggongshu如何调用unicodeToChinese还有我那个bean中,也写了如下的东西:public String tochinese(String str){ if(str==null){ str =""; } else{ try { str = new String(str.getBytes("iso-8859-1"),"gb2312") ; } catch (Exception ex) { } } return str; }不过没有 chinesetounicode这一部分,老兄的email是多少呀 那就不应该了,这种事不能急,没有万能的~我是连接字符串用jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=gb2312再在每个页面都加上<%@page contentType="text/html;charset=gb2312"%><%request.setCharacterEncoding("gb2312");%>这样进出数据库都不用转了,也没问题~在Win或者是Linux下都没问题,也换过很多机器,对这种方案还是比较满意~半年的经验,呵,你要还有问题换一个驱动试试,我以前碰到过驱动出问题~ [email protected] 你直接把我给你的代码存为WEB-INF/classes/com/db/CharCode.java编译后在JSP页面中用<%<jsp:useBean id="CharCode" class="com.string.CharCode"/>String a=CharCode.UnicodeToChinese(a);//入库~~%> 多谢,dongdongshu 可惜,我事过了,还是乱码。我就不知道了,同样是一个数据库,我在本地机器上的脚本执行就没有乱码的问题,而我把同样的脚本放到数据库所在的服务器上。执行的时候就是乱码。可能是什么原因哪? 是呀。不行了,对了如何看我的mysql是数据存取什么编码的 你联结字符串的编码,应该这样: characterEncoding=8859_1试试看!!!mysql对中文支持很好,没什么问题的,还搞不定就留言给我.. 同意 accp(accp) ,我也是这么做的! String ss=new String(s.getBytes("ISO8859-1"));s就是你需要转换的字符,换过之后再往数据库里写。 定义一个函数,存入数据库之前,用它进行转化。public static String toChinese(String strvalue) { try{ if(strvalue==null) return null; else { strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK"); return strvalue; } }catch(Exception e){ return null; } }如:String name=toChinese(request.getParameter("name")); 有万能的str = new String(str.getBytes("iso-8859-1"),"gb2312") ;假设这句话能正确的得到中文 应该可以byte[] b = str.getBytes("gb2312");然后把byte[] b存入数据库 这没问题吧 blob类型然后从数据库中取出来 这也应该没问题吧str = new String(b, "gb2312");是不是万能的 呵呵 那你最上面那句得不到正确的中文呢~并且你来回转,烦不烦呀~建议大家看看我那种方案~我试过Redhat7.1,7.2,8.0都没问题,也不管红帽是中文还是英文 str = new String(str.getBytes("iso-8859-1"),"gb2312") ;这句跟数据库一点关系都没有你还得不到中文那还要程序员做什么 再说了如果这句得不到中文str = new String(str.getBytes("iso-8859-1"),"gb2312") ;那你的方法有什么用jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=gb2312你的这个方法的前提条件不是已经是中文了晕 我也遇到一个字符问题,我想能不能把Tomcat的字符问题完全讨论明白?我的问题是:我在数据库转换之前已经把数据转换成GB2312格式,数据库连接用jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=UTF8,但是有些字符不能转换成UTF8格式,比如"中华人民共和国",其中那个"国"字被转换成乱码"?"请问是不是jdk并不能完全转换字符?是不是它也有BUG 我又没自己说我的是万能的~你能保证这一句一定能得到中文?str = new String(str.getBytes("iso-8859-1"),"gb2312") ;我是说有前提条件就不要说万能~万能应该是放之四海皆准~你说呢 to:wance(五)那不是JAVA的事,MySql自己不支持Unicode~ to:accp(accp)可以和你通过QQ讨论一下这个问题吗?我的QQ:25488186 to:accp(accp)如果是Mysql的问题,那么为何有些中文可以很好的以UTF8格式存在数据库,可是有些个别的字符不能正确的存那?比如:我只输入"中华人民",会很好的以UTF8格式存入。并且网页上读去的时候也能转换回来 如何看mysql的编码是什么你可以下载一个EMS MysqlManager(for windows) myFile.saveAs("smartUpload/upload/"+yhlb+yhid+bu+"."+myFile.getFileExt(),0); sorry贴错了,没看清楚没发现什么错误跟smartUpload没有关系如果你在连接数据库时指定了字符集而且用了转码还是不行,那就没辙了 是smartupload的问题,我研究了好久了这个问题,在win服务器是没有问题的,在linux下就会有问题,跟数据库一点关系都没有,我用oracle也有这问题,在没有进库前字符已经是乱码,各种转换都不行,都不知道smartupload搞了什么东西进去!谁搞定了请告诉一声。必须是用linux做服务器,并且用smartupload传文件一同传字符的时候可以才好出声啊 我以前用unix服务器都没碰到过这问题实现跟你的类似阿 呕,这么说和smartupload、linux有关了,呵呵.那我也不能不用呀?难道把上传和信息输入分成两部再分别提交?郁闷中 呵呵,我投降了。各位兄弟,我不行了,实在不能再拖下去了,只好用两个提交页面来完成了,刚刚测试过,没有问题。没有乱码存在了。我晕呀。同情我吧!!!决定周二结帖!盼望有新的解决方式!!!to kidd_cen(cen) 老兄的话是对的。嘻嘻。不知道你是否也是和我一样这么对付过去的 其实你可以反编译了smartupload的代码,看了它的程序就明白了,它是用getString()方法来取得上传的值,由于linux用的是iso-8859-1所以就会有问题了。我是将它的代码反编译了后,自己加了一个转换(:-),你也试试吧 再解释一下,它是用request.getInputStream().read(byte[],start , len)来读取值,然后用new String(byte[],start,leng)来转换的,当然会用问题了!!! to cashtang(孤独) :老兄好厉害呀!(我们这里叫嚣张,不过是褒义的),呵呵,如何反编译smartupload呀,有什么好的工具吗? 对了,我们编写程序的时候到底哪一步骤什么字符集起作用呀,比如说,request.getParameter接受的汉字,我可以直接显示了。而页面跳转的时候,传递的汉字又变成了乱码? 有没有详细的资料写一写这方面的东西?还有本身我对str = new String(str.getBytes("iso-8859-1"),"gb2312") ;就不明白,本以为出现乱码的时候我就用一下,不行在转换回来,没想到越来越麻烦,呵呵,必须好好弄懂了,有没这方面汉语的介绍? 从url接收过来的的中文不需要转换,从上一个表单提交过来的要转换 是呀,开始的时候没问题,后来把apache和tomcat整合到一起了,结果出问题了,气死我了。现在url接受的中文就是乱码,我倒 如象IBM的developerWorks上有介绍,你看看吧! 从浏览器传过来的带汉字的字符串,如果不经过字符集的转换入库时会出现乱码问题,可用(str.getBytes("iso-8859-1"),"gb2312") 解决。在tomcat(weblogic、resin)+oracle+windows(Linux)下,我全试过,没有问题。 iframe中用execCommand('InsertImage','','url')的图片如何上传到服务器中? javascript也面设计问题,请高人来指点 2007年度 上海 的 JAVA 程序员 情况调查 ! jsp验证用户是否已经登录 初学乍练:求救tomcat 5.0下javabean的路径设计 一个关于JSP页面引用普通JAVA类的问题 怎样改变tomcat4的根目录? 交友源码! 一个很简单的有关servlet的问题 jsp中集合怎么遍历后再修改后到后台 连接mysql的问题 最后只关闭Statement实例而不关闭ResultSet实例行吗?
oracle得是utf-8
不过 存到数据库当中是乱码 没什么吧
只要你读出来显示是中文不就行了终极的办法是存字节
然后取出来转化成中文
String url ="jdbc:mysql://ip地址/数据库名?user="+use+"&password="+pass+"&useUnicode=true&characterEncoding=gb2312";
和JSPSMARTUPLAOD没有关系~~
我也遇到过此类问题!!
给你一个BEAN!!
package com.db;import java.lang.*;
import java.util.*;
import java.lang.Integer;
import java.sql.*;public class CharCode{public static String UnicodeToChinese(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(Exception e)
{
return s;
}
} public static String ChineseToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
return newstring;
}
catch(Exception e)
{
return s;
}
}
}
不行给我发邮件!!
如何调用unicodeToChinese还有我那个bean中,也写了如下的东西:
public String tochinese(String str){
if(str==null){
str ="";
}
else{
try {
str = new String(str.getBytes("iso-8859-1"),"gb2312") ;
}
catch (Exception ex) {
}
}
return str;
}不过没有 chinesetounicode这一部分,老兄的email是多少呀
我是连接字符串用
jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=gb2312
再在每个页面都加上
<%@page contentType="text/html;charset=gb2312"%>
<%request.setCharacterEncoding("gb2312");%>
这样进出数据库都不用转了,也没问题~
在Win或者是Linux下都没问题,也换过很多机器,对这种方案还是比较满意~
半年的经验,呵,
你要还有问题换一个驱动试试,我以前碰到过驱动出问题~
你直接把我给你的代码存为WEB-INF/classes/com/db/CharCode.java
编译后在JSP页面中用
<%
<jsp:useBean id="CharCode" class="com.string.CharCode"/>
String a=CharCode.UnicodeToChinese(a);
//入库~~%>
不行了,对了如何看我的mysql是数据存取什么编码的
s就是你需要转换的字符,换过之后再往数据库里写。
public static String toChinese(String strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}
如:String name=toChinese(request.getParameter("name"));
str = new String(str.getBytes("iso-8859-1"),"gb2312") ;
假设这句话能正确的得到中文 应该可以
byte[] b = str.getBytes("gb2312");
然后把byte[] b存入数据库 这没问题吧 blob类型
然后从数据库中取出来 这也应该没问题吧
str = new String(b, "gb2312");是不是万能的 呵呵
并且你来回转,烦不烦呀~
建议大家看看我那种方案~
我试过Redhat7.1,7.2,8.0都没问题,也不管红帽是中文还是英文
这句跟数据库一点关系都没有
你还得不到中文
那还要程序员做什么
如果这句得不到中文
str = new String(str.getBytes("iso-8859-1"),"gb2312") ;
那你的方法有什么用
jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=gb2312
你的这个方法的前提条件不是已经是中文了
晕
我的问题是:我在数据库转换之前已经把数据转换成GB2312格式,数据库连接用
jdbc:mysql://www1:3306/ISOA?useUnicode=true&characterEncoding=UTF8,
但是有些字符不能转换成UTF8格式,比如"中华人民共和国",其中那个"国"字被转换成乱码"?"
请问是不是jdk并不能完全转换字符?是不是它也有BUG
str = new String(str.getBytes("iso-8859-1"),"gb2312") ;我是说有前提条件就不要说万能~
万能应该是放之四海皆准~
你说呢
那不是JAVA的事,MySql自己不支持Unicode~
可以和你通过QQ讨论一下这个问题吗?
我的QQ:25488186
如果是Mysql的问题,那么为何有些中文可以很好的以UTF8格式存在数据库,可是有些个别的字符不能正确的存那?比如:我只输入"中华人民",会很好的以UTF8格式存入。并且网页上读去的时候也能转换回来
你可以下载一个
EMS MysqlManager(for windows)
没发现什么错误
跟smartUpload没有关系
如果你在连接数据库时指定了字符集而且用了转码还是不行,那就没辙了
实现跟你的类似阿
我是将它的代码反编译了后,自己加了一个转换(:-),你也试试吧
(str.getBytes("iso-8859-1"),"gb2312") 解决。
在tomcat(weblogic、resin)+oracle+windows(Linux)下,我全试过,没有问题。