0 0

为什么以UTF8格式读取UTF8格式文件,写入输出流后还是乱码5

用UTF8编码读入一个utf8的文件,结果写入输出流的时候还是乱码?这是怎么回事?
InputStream ist = LaucherTest.class.getResourceAsStream("/Book1.csv");
InputStreamReader reader = new InputStreamReader(ist,"UTF-8");
ByteArrayOutputStream str= new ByteArrayOutputStream();
int ch;
while((ch=reader.read())!=-1){
    str.write(ch);
}
查看str内容,结果还是乱码
2012年9月06日 11:35

4个答案 按时间排序 按投票排序

0 0

采纳的答案

nputStreamReader reader = new InputStreamReader(ist,"UTF-8");
ByteArrayOutputStream str= new ByteArrayOutputStream();
int ch;
while((ch=reader.read())!=-1){
    str.write(ch);
}


Reader读/Writer写  字符
InputStream读/OutputStream写  字节
它们要配套使用

现在你混用了。把ByteArrayOutputStream改成OutputStreamWriter

2012年9月06日 12:20
1 0

InputStreamReader  read() 是读取一个字符;
ByteArrayOutputStream write(int b) 将指定的字节写入此字节数组输出流。

    public synchronized void write(int b) {
	int newcount = count + 1;
	if (newcount > buf.length) {
	    byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
	    System.arraycopy(buf, 0, newbuf, 0, count);
	    buf = newbuf;
	}
	buf[count] = (byte)b;//在这里转换为byte,只有一个字节,字符是两个字节
	count = newcount;
    }


应该用Writer,比如CharArrayWriter、 PrintWriter等。

2012年9月06日 11:41
0 0

你是怎么查看str里的内容的?你能确定查看的方式是UTF-8编码的吗?

2012年9月06日 12:10
0 2

.java 和项目encoding 转为uft-8

2012年9月06日 11:51

相关推荐

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    Java避免UTF-8的csv文件打开中文出现...Java避免UTF-8的csv文件打开中文出现乱码的方法是使用UTF-16LE编码格式,并在文件头部输出BOM。同时,需要考虑Excel版本的兼容性问题,以确保csv文件可以正确地被打开和读取。

    MFC UTF-8文件批量转成GB2312 解决中文乱码问题

    在本场景中,我们面对的问题是“MFC UTF-8文件批量转成GB2312 解决中文乱码问题”,这涉及到文件的读取、编码转换以及文件的写入操作。 首先,我们需要理解UTF-8和GB2312这两种编码的区别。UTF-8是一种变长的...

    c++ 读写txt文件和乱码问题解决

    在读取UTF-8编码的TXT文件时,可以使用第三方库,如`iconv`或`ICU`进行转换。然而,对于简单的读写操作,一个实用的方法是使用`wstring`(宽字符串)和`std::codecvt_utf8`: ```cpp #include #include #include ...

    pb12 gb转utf-8

    3. 写入新格式:转换后的数据应保存为UTF-8格式。如果是数据库,可能需要更新数据库的字符集设置,如果是文件,就需要重新写入文件,并确保文件以UTF-8编码。 4. 验证与测试:转换后,需要对结果进行验证,确保所有...

    PB9转换utf-8例子

    这个过程通常涉及打开一个流对象,设置其编码类型,读取原始数据,然后以目标编码(这里是UTF-8)写入新流,最后保存结果。 标签“pb9 utf-8”明确了讨论的是与PowerBuilder 9相关的UTF-8编码问题。UTF-8是一种广泛...

    utf-8文件格式转换工具

    UTF-8文件格式转换工具是一种实用的软件,主要用于处理不同编码格式之间的转换,尤其是将GBK或GB2312等中文编码格式的文件转化为UTF-8编码格式。在信息技术领域,字符编码是至关重要的,因为它决定了计算机如何理解...

    java读写csv文件,中文乱码问题

    下面我们将深入探讨如何在Java中正确地读取和写入CSV文件,以及解决中文乱码的问题。 1. **字符编码的理解**: - 在处理中文字符时,必须确保使用正确的字符编码,例如UTF-8。UTF-8是一种广泛支持的编码格式,可以...

    文件编码转换(utf8与gbk相互转换)

    # 读取GBK文件并转换为UTF-8 with codecs.open('原文件.gbk', 'r', encoding='gbk') as f_in: content = f_in.read() # 将内容编码为UTF-8并写入新文件 with codecs.open('新文件.utf8', 'w', encoding='utf-8') ...

    批量utf文件转utf8-bom

    "批量utf文件转utf8-bom"这个主题指的是将一批以UTF编码的文件转换为带有BOM(Byte Order Mark)的UTF-8编码。BOM是一个特殊的字节序列,用于标识文件的编码类型,对于UTF-8编码,BOM的字节序列为0xEF, 0xBB, 0xBF。...

    Android读取本地json文件的方法(解决显示乱码问题)

    下面的代码演示了如何以UTF-8编码读取JSON文件: ```java public static String readLocalJson(Context context, String fileName) { String jsonString = ""; String resultString = ""; try { InputStream ...

    创建UTF8 文件

    在读取UTF-8文件时,也需要类似的处理,确保输入流以UTF-8模式打开。 总的来说,虽然C++标准库本身对UTF-8的支持有限,但通过第三方库和适当的编码转换技巧,我们仍然可以在C++程序中创建和操作UTF-8编码的文件。...

    java jsp解决utf-8乱码.zip

    5. 字符流操作不当:在处理输入输出流时,如果没有指定正确的字符编码,例如读取或写入文件,也可能引发乱码。 针对这些问题,我们可以采取以下措施进行解决: 1. 使用统一的编码:确保整个项目的文件都使用UTF-8...

    UTF8-无BOM转为UTF16LE

    UTF16编码总是以一个BOM(字节顺序标记)开始,它的字节序为0xFF, 0xFE,用来标识文件是采用小端序还是大端序。UTF16LE是小端存储方式,即数值的低位字节存储在内存的低地址位置,高位字节存储在高地址位置。 文件...

    Txt批量转UTF-8的工具

    4. 将转换后的内容写入新的UTF-8编码的TXT文件。 5. 删除原始的ANSI格式文件,或者保留两个版本供用户选择。 使用这样的批处理脚本,可以极大地提高工作效率,特别是当需要处理大量文件时。当然,使用前应确保所有...

    彻底解决JAVA读取写入 TXT中文乱码问题 源码

    以下是使用`BufferedReader`和`FileReader`读取UTF-8编码的TXT文件的示例: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReadTextFile { ...

    易语言ANSI+UTF-8解码源码

    4. 将转换后的字节流写入新文件,使用易语言的`写文件`命令。 对于UTF-8到ANSI的转换,步骤类似,只是转换方向相反,需要从多字节的Unicode字符转换回单字节的ANSI字符。 了解并掌握易语言的ANSI和UTF-8解码源码,...

    UTF8转GBK C语言 单片机

    2. **解析UTF-8**:读取数据流中的UTF-8编码字符,根据其最高位来确定字符的字节数。例如,如果最高位是110,则是2字节的UTF-8字符;如果是1110,则是3字节的字符。 3. **计算Unicode码点**:根据UTF-8编码规则,将...

    xe10_utf_8转换

    4. **流处理**:如果你需要读取或写入包含UTF-8编码的文件,可以使用`TMemoryStream`和`TFileStream`。在读取时,可以使用`TStreamReader`,设置其Encoding属性为`TEncoding.UTF8`;在写入时,使用`TStreamWriter`,...

    zh-cn-utf8

    首先,我们需要了解在配置PHP环境时,为什么UTF-8如此重要。PHP作为服务器端脚本语言,常用于构建动态网站和应用程序。当处理包含中文字符的数据时,如果编码不一致,可能会导致乱码问题。使用UTF-8,可以确保PHP...

Global site tag (gtag.js) - Google Analytics