今天遇到一个问题,我使用struts上传文件 在读txt文件时候有4种编码格式ANSI、UTF-8、Unicode和Unicode big endian,但是我读数据想入到数据库中,出现乱码,数据库是UTF-8格式,请那位高手指教下,当我以4种不同的方式,写到数据库中时,怎么样转码(前提是文本都是中文) 
还有个问题是,我文本选择UTF-8格式读到数据库中时(UTF-8),为什么读文本文件第一行第一个汉字入到数据库中时,怎么入到数据库第一个汉字前面有个问号,怎么解决这问题啊 
谢谢,那位高手帮吗解决下

解决方案 »

  1.   

    是不是要手动的进行转码? 就是在读文件的时候,把其转为 utf8 格式的. streamReader 的构造函数好像有这个选项样的
      

  2.   

    Unicode的txt前两个字节是ff fe,
    Unicode big endian的txt前两个字节是fe ff
    UTF-8的txt前三个字节是ef bb bf
    ANSI的txt是直接开始内容的。
    因为你的txt是UTF-8的,问号应该是由于前缀的ef bb bf引起的。
    你可以判断txt的前几个字节来知道txt用的是那种编码。
      

  3.   

    答:第一个汉字前面有个问号,这个? 就是由 文本文件的BOM引起的(你把BOM作为数据读入数据库中了),你用BOM(见2楼)来判 文本文件的编码,然后利用该编码正确读入汉字 就行了.
      

  4.   


    让会员指定上传文件的编码,然后用String(byte[] bytes, Charset charset)转换上传过来的数据添加到数据库中。
    这样转换起来比较容易。
      

  5.   

    给你一伪代码 InputStream fileIS new FileInputStream(fileName);InputStreamReader inputStreamReader = new InputStreamReader(fileIS);String encode = inputStreamReader.getEncoding();
      

  6.   

    这样的方式只有当第一个字符是 UTF8 字符方有效。