[返回首页] - [索引页面] - [文章列表]
主题:用commons-upload组件上传时,中文文件名出现乱码????????????????
哪位高人知道用commons-upload组件上传时,中文文件名插入mysql数据库中出现乱码,怎么办?????:? 用temp=filename.getBytes("iso-8859-1");
在插入前做转换,还是插入后显示时,转换就不好使!!!!!!!!
回复人:Banned(bannedlqd@hotmail.com) 三级(初级) 信誉:105 2005-4-8 15:42:13 得分:2
|
| 假设浏览器的header encoding是UTF-8,
DiskFileUpload.setHeaderEncoding("UTF-8"); ... fileName=FileItem.getName();
System.out.println(fileName);
如果打印出来的fileName不会乱码, 那么剩下的任务就是Servlet与mysql之间的了。
| | TOP |
回复人:java_jing(梦鸟) 二级(初级) 信誉:100 2005-4-8 16:52:20 得分:0
|
| <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
没用utf-8
| | TOP |
回复人:java_jing(梦鸟) 二级(初级) 信誉:100 2005-4-8 16:55:17 得分:0
|
| 且在插入数据库前,中文文件名输出正常,只是插入进mysql中是乱码
| | TOP |
回复人:yxhzj(余华[学习J2EE中]) 四级(中级) 信誉:100 2005-4-8 17:15:04 得分:3
|
回复人:Banned(bannedlqd@hotmail.com) 三级(初级) 信誉:105 2005-4-8 19:53:37 得分:15
|
| >>且在插入数据库前,中文文件名输出正常,只是插入进mysql中是乱码
你所设置的mysql的默认字符集编码是什么?
我用的mysql的版本是4.1.10a,它支持utf8.
在my.ini(在c:/my.ini或%windir%/my.ini,如果没有则自己弄一份到c:/下)中编辑, 使得有如下代码(大概的,有些也许会写错,可以mysqld --verbose --help, mysql --help确认一下)
[client] default-character-set=gbk [mysqld] character-set-server=utf8
然后重新建库表,再试试。
注意,通过jdbc for mysql指定 useUnicode=true&characterEncoding=UTF-8. 这样直接从数据库读出来就可以了,不用再转码。
| | TOP |
回复人:java_jing(梦鸟) 二级(初级) 信誉:100 2005-4-11 9:08:02 得分:0
|
| 我是在server.xml中配的数据库连接池,没法设useUnicode=true&characterEncoding=UTF-8. 通过jndi找数据库的连接,
<Resource name="jdbc/user" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/user"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit. --> <parameter> <name>maxActive</name> <value>100</value> </parameter> <!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit. --> <parameter> <name>maxIdle</name> <value>30</value> </parameter> <!-- Maximum time to wait for a dB connection to become available in ms, in this example 10 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. --> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <!-- MySQL dB username and password for dB connections --> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value>jing6699</value> </parameter> <!-- Class name for mm.mysql JDBC driver --> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost:3306/user?autoReconnect=true</value> </parameter> </ResourceParams>
我将jdbc:mysql://localhost:3306/user?autoReconnect=true换成jdbc:mysql://localhost:3306/user?autoReconnect=true&useUnicode=true&characterEncoding=gb2312后,tomcat就启不来了,
| | TOP |
回复人:java_jing(梦鸟) 二级(初级) 信誉:100 2005-4-11 9:08:30 得分:0
|
回复人:java_jing(梦鸟) 二级(初级) 信誉:100 2005-4-11 10:41:07 得分:0
|
| C:\mysql\bin>mysqld --verbose --help mysqld: ERROR: unknown variable 'character-set-server=utf8'
| | TOP |
该问题已经结贴 ,得分记录:Banned(2)、yxhzj(3)、Banned(15)、
|