我有一个JSP / Servlet应用程序如下:
1-从jsp页面上传Excel工作表
2-阅读内容并将其添加到Servlet / Java代码中的mySQL
当我在excel中有阿拉伯字符时,它将被添加到数据库中
???? 在JSP文件中,我更改了页面编码,如下所示:
<%@ page language="java"
contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
在html表单中,文件上传输入我添加了enctype =
"multipart/form-data;charset=utf-8"
我测试了mySql,它支持阿拉伯语字母(我可以通过控制台插入和选择),当我尝试从阿拉伯语中的数据库中读取内容并在JSP中查看它时工作正常!它正在我的工作正确本地syatem,但当我在服务器上部署war文件时,然后上传excel文件,它显示?????在数据库中标记
我认为问题出在上传部分!任何人都可以帮忙吗?
由于
答案 0 :(得分:0)
我认为问题在于Excel文件的编码。如果您正在从其他来源(工作表)读取数据,则HTML的编码无关紧要。如果从Windows系统上传excel,则编码可能不是UTF-8,而是 CP-1252
CP-1256
更新:Windows-1252
是拉丁文版,因为阿拉伯文字符窗口使用windows-1256
,基于ISO 8859-6
。 UTF-8为每个字符使用1到4个字节,而ISO 8859每个字符仅使用一个字节,因此如果将两者混合使用会出现问题。
答案 1 :(得分:0)
当您在servlet中读取excel文件时,应该读取该文件为UTF8流。 然后,当您将数据插入数据库时,用于插入的连接必须声明为UTF8连接,例如
DriverManager.getConnection( "jdbc:mysql://"+host+"/"+dbName+"?useUnicode=true&characterEncoding=UTF-8",user,pass);