问题描述
我在本地开发的程序,从本地文件中读取中文后,入库没有编码问题;但是我,把这个程序传到服务器上,我们的服务器是Linux的系统,文件系统是utf-8的。同样的程序,在Linux上运行读取文件里的中文,入库就是乱码了;在服务器上,如果我将中文直接写在程序里面入库,没有乱码问题。感觉应该是编码转换的事儿,我试了如下几种办法:1、String sql = new String(sql.getBytes("GBK"),"UTF-8");2、String sql = new String(sql.getBytes("UTF-8"),"GBK);3、String sql = new String(sql.getBytes(),"GBK");4、Sttring sql = new String(sql.getBytes(),"UTF-8");好像都不好使。再说明一下,我上传上去的文件是GBK编码的,后来又上传了一个UTF-8编码的文件上去,也都不好使,不知道怎么办了,向高人求教。 问题补充:anyasir 写道
解决方案
在读取文件构建流的时候 指定编码InputStreamReader sr = new InputStreamReader(new FileInputStream("D:\test.txt"),"utf-8");BufferedReader reader = new BufferedReader(sr);
解决方案二:
没遇到过类似的编码转换问题:我认为跟服务器是什么系统没关系客户端文件--->java程序--->数据库我认为编码问题在这三者之间产生你以哪种编码来读取客户端文件,然后java程序以哪种编码存入数据库,数据库已哪种编码来存储,三者统一应该就不会出乱码同意ethen的方式,读取客户端文件的时候在java程序做打印调试,看是否用对了编码
解决方案三:
1、既然你能在数据库里面保存中文,那就不是数据库的错。2、既然你自己直接在程序里写中文能插入到数据库,就不是插入程序的错。3、你可以直接把从文件里面读的内容打印出来看看。我觉得是文件读取时候的转码问题。
解决方案四:
你的编码可能转来转去 最后都没统一了 你大致描述一下你转的过程(从中文到服务器的数据库)
解决方案五:
你这个程序是干嘛的?读取本地文件的中文?在本地机器上读取本地文件,那么到了linux服务器是否是读取服务器上的文件?服务器是utf-8的编码?那么你的数据库是什么编码方式?