泰国字符显示?????在jsp中标记文件上传

时间:2014-05-12 09:42:34

标签: java mysql excel jsp servlets

我有一个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文件,它显示?????在数据库中标记

我认为问题出在上传部分!任何人都可以帮忙吗?

由于

2 个答案:

答案 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);