当前位置:  技术问答>java相关

读取中文的问题

    来源: 互联网  发布时间:2015-08-09

    本文导语:  我改动了一个书上的读取英文字符的例子,想从一个文件中读取中文字符,程序如下(source.txt中的内容为中文),可是显示为: ?? 总数为 2 import java.io.*; public class IODemo2 {    public static void main(String[] args)  ...

我改动了一个书上的读取英文字符的例子,想从一个文件中读取中文字符,程序如下(source.txt中的内容为中文),可是显示为:

??
总数为 2


import java.io.*;
public class IODemo2
{
   public static void main(String[] args)
   {
int i;
byte b;
try
{
            DataInputStream in = new DataInputStream(new ileInputStream   ("c:\jdk\source.txt"));
    i=0;
    while(i>=0)
    {
try
{
b=in.readByte();
System.out.print((char)b);
i++;
}
catch(Exception e)
{
    System.out.println();
    System.out.println("总数为 "+i);
    in.close();
    i=-1;
                }
    }
}
catch(Exception e){}
    }
}

|
import java.io.*;
public class IODemo2
{
   public static void main(String[] args)
   {
int i;

try
{
            FileReader in = new FileReader("C:\jdk\source.txt");
    i=0;
    while(i>=0)
    {
try
{
i=in.read();
System.out.print((char)i);

}
catch(Exception e)
{
   
                }
    }
              in.close();
}
catch(Exception e){
        System.out.println(e.getMessage());
      }
    }
}

|
用:
String strResult="";
.
.
.
String str=in.readLine();
strResult=strResult+str;

.
.
.
System.out.println("总数为 "+strResult.Length);

|
建议使用StringBuffer代替String,不然文件大了会很慢的,最好是一行统计一次,最后相加

|
??
char是16位
汉字编码也是16位(unicode)
???

|
import java.io.*;
public class IODemo2
{
   public static void main(String[] args)
   {
int i;
char b;
try
{
            FileReader  in = new FileReader  ("c:\jdk\source.txt"));
    i=0;
    while(i>=0)
    {
try
{
b=in.read();
System.out.print(b);
i++;
}
catch(Exception e)
{
    System.out.println();
    System.out.println("总数为 "+i);
    in.close();
    i=-1;
                }
    }
}
catch(Exception e){}
    }
}

|
to:
ggyy(没钱?滚蛋!--沧海桑田,伶仃过洋) 

你这样不可以吧?
读入中文的时候你会把一个字拆成两个字吧?

|
read
public int read()
         throws IOExceptionRead a single character.
Overrides:
read in class Reader
Returns:
The character read, or -1 if the end of the stream has been reached
Throws:
IOException - If an I/O error occurs
///所以read是读取一个char的,只不过又将他转化为了32位了。
//但是不是说读取32位的(2个字节)
System.out.print((char)i);
所以不会读入中文的时候你会把一个字拆成两个字

|
楼上,你的程序连编译都通不过啊!

|
哦,不好意思,没看到你的第2段程序。
但为什么读文件会多一个问号出来

    
 
 

您可能感兴趣的文章:

  • qt编程问题:读取中文文档!
  • 求助:关于读取移动存储卡中文文件名
  • linux下得中文文件名怎样才能用函数读取?
  • Java国际化时怎么不能正确读取.properties文件中的中文字符串,如何解决其中的中文问题?
  • 读取sybase的数据库时的中文记录显示问题
  • 怎么从文件读取中文阿?
  • 嵌入式板子上调用dirent.h里面的相关函数来读取文件夹内容,如何转为中文???
  • 如何读取文件中的中文,并显示在Label或TextField里?
  • socket读取中文数字混合字符出错
  • java中使用URL类,读取服务器上的文件返回的中文为什么是乱码?
  • jsp读取oracle8.1.6数据表中的中文,读出为?,着急啊。
  • 数据流中中文正确读取的问题??
  • 【请教版主和高手】windows二进制存的中文资料文件,在linux下用二进制方式读取乱码,多谢!
  • 我用流读取文件,如果文件中有中文字符则出现乱码,该怎么办??
  • 为什么使用cat输出的文本文件是中文的,使用java从文件读取出来时显示的是乱码?
  • 初学,如何用JSP读取中文。
  • 请问怎样可以将用jdom从xml文件中读取出来的数据转换为中文(gb2312)
  • php读取mysql中文乱码解决方法
  • 谁能告诉我,用java读取 sybase数据库,如何解决中文问题??急急急急!!!
  • tomcat读取本地文件的问题?还有,中文乱码谁完整地解决?
  • linux 下使用 FREETDS 访问数据库 image 字段的问题, 仅能读取 64K ,超出部分读取不到?
  • 串口读取数据的问题
  • linux下的mib读取问题?大虾帮解答下
  • shell读取文件的简单问题
  • 关于从浏览器中读取文件的问题
  • 文件读取的问题!(急需您的帮助)
  • 文件读取的问题
  • AIX环境下串口读取问题
  • 请教个程序中文件读取复制的问题。。。
  • 关于读取文件内容的问题,求教!!!
  • 多进程问题 子进程读取内容 读完挂起,父进程写 写入后唤醒子进程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 getline():读取一行字符
  • read函数读取文件时如何一行一行的读取,请指教!
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • java中读取.txt和读取.ini文件的方式和命令是否一样
  • C++ I/O 成员 ignore():读取字符并忽略指定字符
  • 上传文件时,如何在读取文件内容之前中断读取,并返回客户端错误信息?
  • C++ I/O 成员 read():读取字条符
  • 光驱中有一张光盘,成功读取,现在想换另一张光盘并读取,该如何做
  • C++ I/O 成员 gcount():返回读取的最后一次输入的字符数
  • 请问在Java程序中能否直接读取ini文件,如何读取?
  • C++ I/O 成员 get():读取字符
  • 高手帮忙:如何用java读取数据(从ftp服务器上一个文本文件)但不采用get的方式直接读取,打印数据内容(web方式)
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • python读取浮点数和读取文本文件示例
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 读取spring配置文件的方法(spring读取资源文件)
  • 能否读取一个二进制文件的大小
  • c语言读取csv文件和c++读取csv文件示例分享
  • 请问readdir读取顺序是什么
  • map读取文件
  • 一个读取文件内容时遇到的问题,就是只读取了文件第一行的内容。。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3