`
xiaotian_ls
  • 浏览: 308120 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

FileWriter不能写utf-8

    博客分类:
  • JAVA
阅读更多

今天碰到个问题,统计数据,用FileWriter写到unix系统的一个文件中,然后程序导入到另外一个表中,总是有乱码出现。数据库驱动的编码是utf-8,转了好几次也不行,怀疑是写文件的问题。上网google了下,原来FileWriter不能写utf-8,google就是好。

package cn.yethyeth.sample.io;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
/** *//**
 * 本文件名为FileWriterSubstituteSample,实际上是在寻找FileWriter的替代者。
 * 因为FileWriter在写文件的时候,其编码方式似乎是System.encoding或者System.file.encoding,
 * 在中文win下encoding基本是gb2312,在en的win下基本是iso-8859-1,总之不是utf-8。
 * 所以要创建一个utf-8的文件,用FileWriter是不行的。
 * 目前不知道如何更改其用来写文件的编码方式,因此对于创建utf-8文件使用如下方式来代替。
 *
 * 参见:
 * http://www.malcolmhardie.com/weblogs/angus/2004/10/23/java-filewriter-xml-and-utf-8/
 */
public class FileWriterSubstituteSample ...{
    public static void main(String[] args)...{
        String path="cn/yethyeth/sample/resources/XML_UTF-8.xml";
        try ...{
            OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream(path),"UTF-8");
            out.write("<?xml version="1.0" encoding="utf-8"?><a>这是测试。</a>");
            out.flush();
            out.close();
            System.out.println("success...");
        } catch (UnsupportedEncodingException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
  } catch (IOException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

分享到:
评论

相关推荐

    大文本读取,使用API,可转换UTF-8,Unicode编码

    在给定的标题和描述中,我们聚焦于如何高效地读取大文本文件,并利用API进行编码转换,特别是UTF-8和Unicode这两种广泛使用的字符编码。在此,我们将深入探讨这些主题,并提供相关的VB(Visual Basic)编程实践。 ...

    【源代码】明解Java-UTF-8.rar

    3. 文件操作:`FileReader`和`FileWriter`默认使用平台默认编码,但在跨平台项目中,应显式指定UTF-8编码,如`new FileWriter(file, "UTF-8")`。 4. 网络通信:在发送HTTP请求或处理响应时,HTTP头中的`Content-...

    dom4j 输出XML时中文乱码解决

    这是因为 `FileWriter` 对象不支持 UTF-8 编码方式。为了解决这个问题,我们可以使用 `FileOutputStream` 对象替代 `FileWriter` 对象。下面是一个示例代码: ```java try { output = new XMLWriter(new ...

    EL中文显示乱码的解决办法

    如Java的`FileReader`、`FileWriter`应配合`InputStreamReader`和`OutputStreamWriter`使用,并指定UTF-8编码。 8. **国际化和本地化**: - 使用`ResourceBundle`处理多语言时,确保资源文件的编码是UTF-8,且在...

    JAVA编码问题.pdf

    2. **写入文件**:同样,使用`BufferedWriter`或`FileWriter`写入文件时,也需要指定正确的编码,例如`new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))`。 三、**HTTP请求和响应...

    Jsp中文乱码解决方案.rar

    7. 文件读写操作:在读写文件时,明确指定UTF-8编码,例如使用Java的`FileReader`和`FileWriter`时,传入`"UTF-8"`作为编码。 8. 对于POST请求,确保表单提交的编码也设置为UTF-8: ```html ...

    java读写文件避免中文乱码.pdf

    为了避免中文乱码,需要使用正确的编码方式,例如 UTF-8。 在读取文件时,需要使用 InputStreamReader 对象,并将其设置为 UTF-8 编码方式。这样可以正确地读取含有中文字符的文件。下面是一个示例代码: ```java ...

    数据库术语-UTF_8

    例如,当我们读写文件或与数据库进行交互时,可以使用`FileReader`、`FileWriter`、`BufferedReader`、`BufferedWriter`类的构造函数指定UTF-8编码。此外,JDBC(Java Database Connectivity)API在执行SQL语句时,...

    java中文编码

    2. 文件读写时指定编码:使用FileReader、FileWriter等类读写文件时,明确指定编码,例如`new FileReader(file, "UTF-8")`。 3. 使用InputStreamReader和OutputStreamWriter:在处理流时,通过这些类指定编码,例如`...

    模拟面试 Java试题

    Java的`FileReader`和`FileWriter`默认使用平台默认编码,通常需要使用`InputStreamReader`和`OutputStreamWriter`配合指定编码,如`new InputStreamReader(new FileInputStream(file), "UTF-8")`。 7. **IDE设置**...

    java中文乱码.rar

    例如,`str.getBytes("UTF-8")`将字符串按照UTF-8编码为字节数组,`new String(bytes, "UTF-8")`则将字节数组解码为字符串。 4. 控制台输出的乱码: Windows系统下的控制台默认编码可能是GBK,而Java输出的是UTF-...

    java乱码终极必杀技

    在文件读写操作中,Java的`FileReader`和`FileWriter`默认使用平台默认编码,这往往不是我们期望的UTF-8。因此,应使用`InputStreamReader`和`OutputStreamWriter`配合`BufferedReader`和`BufferedWriter`,并指定...

    java读写文件避免中文乱码.docx

    为了避免中文乱码,需要在 `InputStreamReader` 构造函数中指定编码方式为 "UTF-8",例如: `InputStreamReader read = new InputStreamReader(new FileInputStream(f), "UTF-8");` 这样,在读取文件时,Java 就会...

    java汉字问题解决方案

    FileWriter fw = new FileWriter("filename", true, "UTF-8"); // 以UTF-8编码写入 ``` - 使用`InputStreamReader`和`OutputStreamWriter`作为`BufferedReader`和`BufferedWriter`的包装器,也可以设置编码。 2....

    mysql+jsp+SSH网站开发中文乱码解决方案

    如果涉及到读写文件,确保文件的读写操作也采用UTF-8编码,例如使用`BufferedReader`和`FileWriter`时指定编码。 8. **IDE和文本编辑器设置**: 开发工具如Eclipse、IntelliJ IDEA等,以及用于编辑文本文件的工具...

    解决Linux操作系统下Java的中文乱码问题

    这主要涉及到编码格式的不匹配,因为Linux系统默认采用UTF-8编码,而某些Java应用或文件可能使用了GB2312、GBK或其他编码。本篇将详细介绍如何解决这一问题。 首先,我们需要理解字符编码的基本概念。字符编码是...

    Java设置String字符串编码方法详解

    字符编码是将字符(如字母、数字和符号)与数字或二进制值关联的系统,例如ASCII、Unicode(包括UTF-8、UTF-16等)和GB2312等。Java语言默认使用Unicode作为其内部字符集,这使得Java程序可以处理各种语言的字符。 ...

    java web处理 emoji demo

    Unicode是一种包含大量字符(包括各种语言和特殊符号,如Emoji)的标准,而UTF-8是Unicode的一种常见编码方式。在Java中,字符串默认使用UTF-16编码,因此当接收到UTF-8编码的Emoji时,需要进行正确的转换。 1. **...

    解决全站编码问题的javaWeb小项目

    JavaWeb应用需要正确设置`request.setCharacterEncoding("UTF-8")`来确保请求参数以UTF-8编码解析,否则可能会出现乱码。 2. **响应编码** 在服务器向浏览器返回响应时,应设置合适的Content-Type响应头,如`...

Global site tag (gtag.js) - Google Analytics