oracle数据库bolb字段乱码

情况如下:

      有两台机,一台是本机,开发用的(window),一台是服务器(linux),分别安装java环境,各自跑tomcat,只是数据库是用服务器上的那个oracle,现在开发的那台机里访问一个页面,如:http://192.168.2.100/news/index.jsp,页面一切正常,没有出现乱码。但如果是将URL地址改为服务器上的,如:http://192.168.2.110/news/index.jsp就会出现乱码了。只是bolb字段的数据是这样,其它的正常。

     

       竟然只是bolb字段出现乱码就好办了,想了一想,应该是在pojo里,取bolb字段时没有设定字符集的原因,将pojo里的bolb字段的get方法增加一个如:

     

      

public String getContextString(){
    if(this.context!=null){
         return new String(context,"GBK")
    }else{ return ""; }    
}

 

    更新到服务器上,页面一切正常了。由于原来的没有指定字符集的编码,所以导致出现了乱码。但 现问题是,数据都是用服务库上的那个oracle,如果是乱码的话,那无论是本机的还是服务器上的页面,打开时都应该是乱码才对的。但为什么就是本机上的没有出现乱码,而服务器上的就会出现呢?莫非是与在没有指定字符集时就会默认采用操作系统默认的那个字符集的原因?如果真的是如此,那应该对bolb字段在pojo里都增加两个方法,一个是上面的那个get,还应该增加一个set的方法如:

public void setContextString(String context){
    this.context = context.getBytes("GBK");
}

 

指定保存了在数据库里的采用的字符集编码!不过到底是不是这个原因就不肯定了。呵呵....

 

MultipartFile是Spring框架中用于处理文件上传的类,而Blob数据库中用于存储二进制数据的类型。将MultipartFile转换为Blob可以实现将上传的文件保存到数据库中。 下面是将MultipartFile转换为Blob的步骤: 1. 获取MultipartFile对象的字节数组:使用`getBytes()`方法可以获取MultipartFile对象的字节数组表示。 2. 创建Blob对象:使用数据库连接的`createBlob()`方法可以创建一个空的Blob对象。 3. 将字节数组写入Blob对象:使用Blob对象的`setBytes()`方法可以将字节数组写入Blob对象。 4. 关闭输入流:关闭MultipartFile对象的输入流。 以下是一个示例代码,演示了如何将MultipartFile转换为Blob: ```java import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class MultipartFileToBlobConverter { public void convert(MultipartFile multipartFile, Connection connection, String tableName, String columnName) throws IOException, SQLException { // 获取MultipartFile对象的字节数组 byte[] fileBytes = multipartFile.getBytes(); // 创建Blob对象 Blob blob = connection.createBlob(); // 将字节数组写入Blob对象 blob.setBytes(1, fileBytes); // 关闭输入流 InputStream inputStream = multipartFile.getInputStream(); inputStream.close(); // 将Blob对象插入数据库表中 String sql = "INSERT INTO " + tableName + "(" + columnName + ") VALUES(?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setBlob(1, blob); preparedStatement.executeUpdate(); } } ``` 请注意,上述代码中的`connection`参数是数据库连接对象,`tableName`参数是表名,`columnName`参数是Blob字段的列名。你需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值