0 0

读文件时读出一些垃圾信息.解决办法,还也没有其他的办法10

比如: 在/res/raw/xia.txt 文件内容为:  ##随机中文字符串##
运行时 会发现在logcat里出来的文字不仅仅是乱码。。。 而且乱码前后会附加一些垃圾信息:
07-24 08:54:56.816: DEBUG/DataReadThread(3105): ï##è¿™æ˜¯ä¸ æ–‡å†…å®¹##À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€è¿™æ˜¯ä¸ 文内容##À€À€À€À€À€À€À€À€À€À€À€ÀÀ€À€À€À€À€À€À€À€À€À€À€ÀÀ€À€À€À€À€À€À€À€À€À€À€À

乱码问题还不是什么问题.

主要是 :读出来的东西 不正确啊!!!出现了一些垃圾信息

看到没? 两个##号 的前后 有些垃圾信息。而且##出现了4次。 按理说 只出现 2次啊。

不信你们 试试?

如果不 添加类似  ## 占位符,都读不出来 正确的信息。

下面是程序代码,不信你们试试? 我用的是1.5平台

  InputStream inputStream  =  this.getResources().openRawResource(R.raw.xxxx);
    StringBuffer tempStr = new StringBuffer();
    byte[] buffer=new byte[1024];
    int size=buffer.length;
    while(size!=-1 || size>=buffer.length){
         size=inputStream.read(buffer);
         tempStr.append(new String(buffer, "UTF-8")); 
    }

      String allCaipus = tempStr.toString();
     String splitStr = "##";  // 占位符
    
     // 删除占位符前的字符
     allCaipus=allCaipus.substring( allCaipus.indexOf(splitStr)+splitStr.length(),allCaipus.length());
     
     // 删除占位符后的字符
      allCaipus=allCaipus.substring(0, allCaipus.indexOf(splitStr));

     this.setTitle( allCaipus); // 这个时候 才 在title 上显示正确:  “随机中文字符串”。

这是 为什么啊? 有谁能说说?



我提交给 google 开发论坛,没人回答,估计没人看懂 我写的 英文。
http://code.google.com/p/android/issues/detail?id=3388


http://stackoverflow.com/questions/1187253/a-bug-read-data-from-res-raw-xxxx-txt-but-there-are-so-many-garbage-information
2009年8月03日 18:58

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

0 0

qqqqqq

2009年8月10日 14:46
0 0

引用

顺便说一句,论坛小测验也很雷人啊

原来在座各位都做个小测试啊...

2009年8月03日 21:18
0 0

javaeyes 写道
楼主的读文件方式实在雷人。文本文档的字符编码可能是单字节,双字节的,或者还有三个字节的。你任意读取一段字节,很可能导致在结尾处将一个字符的两个字节截断,再读取下一段字符时就是乱码了。三楼的办法还可以一用,但是遇到不同编码的文档可能会存在问题。
顺便说一句,论坛小测验也很雷人啊

呵呵,对, 不同编码的确会有问题. 我当时写的时候是因为目标文件全是ascii字符,所以因陋就简了.

2009年8月03日 18:58
0 0

楼主的读文件方式实在雷人。文本文档的字符编码可能是单字节,双字节的,或者还有三个字节的。你任意读取一段字节,很可能导致在结尾处将一个字符的两个字节截断,再读取下一段字符时就是乱码了。三楼的办法还可以一用,但是遇到不同编码的文档可能会存在问题。
顺便说一句,论坛小测验也很雷人啊

2009年8月03日 18:58
0 0

lordhong 写道
bamboowind 写道

ps.哎,为了回答问题,被迫回答了论坛知识小测验..



唉... 我也是晚节不保啊... 


是啊,换着别的论坛,早就走人了。感觉javaeye有点装清高,呵,不要封杀我啊。。。

2009年8月03日 18:58
0 0

bamboowind 写道

ps.哎,为了回答问题,被迫回答了论坛知识小测验..



唉... 我也是晚节不保啊... 

2009年8月03日 18:58
0 0

InputStream不应该直接用StringBuffer来读,需要通过BufferedReader转一下. 参考这个:

InputStream is = getResources().openRawResource(R.raw.good);
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		int i = 0;
		String sc = null;
		do {
			sc = br.readLine();
			if (sc == null) {
				throw new IOException("doesn't have enough lines!");
			}
			i ++;
		}while (i < 12);


ps.哎,为了回答问题,被迫回答了论坛知识小测验..


buyajun 写道
比如: 在/res/raw/xia.txt 文件内容为:  ##随机中文字符串##
运行时 会发现在logcat里出来的文字不仅仅是乱码。。。 而且乱码前后会附加一些垃圾信息:
07-24 08:54:56.816: DEBUG/DataReadThread(3105): ï##è¿™æ˜¯ä¸ æ–‡å†…å®¹##À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€À€è¿™æ˜¯ä¸ 文内容##À€À€À€À€À€À€À€À€À€À€À€ÀÀ€À€À€À€À€À€À€À€À€À€À€ÀÀ€À€À€À€À€À€À€À€À€À€À€À

乱码问题还不是什么问题.

主要是 :读出来的东西 不正确啊!!!出现了一些垃圾信息

看到没? 两个##号 的前后 有些垃圾信息。而且##出现了4次。 按理说 只出现 2次啊。

不信你们 试试?

如果不 添加类似  ## 占位符,都读不出来 正确的信息。

下面是程序代码,不信你们试试? 我用的是1.5平台

  InputStream inputStream  =  this.getResources().openRawResource(R.raw.xxxx);
    StringBuffer tempStr = new StringBuffer();
    byte[] buffer=new byte[1024];
    int size=buffer.length;
    while(size!=-1 || size>=buffer.length){
         size=inputStream.read(buffer);
         tempStr.append(new String(buffer, "UTF-8")); 
    }

      String allCaipus = tempStr.toString();
     String splitStr = "##";  // 占位符
    
     // 删除占位符前的字符
     allCaipus=allCaipus.substring( allCaipus.indexOf(splitStr)+splitStr.length(),allCaipus.length());
     
     // 删除占位符后的字符
      allCaipus=allCaipus.substring(0, allCaipus.indexOf(splitStr));

     this.setTitle( allCaipus); // 这个时候 才 在title 上显示正确:  “随机中文字符串”。

这是 为什么啊? 有谁能说说?



我提交给 google 开发论坛,没人回答,估计没人看懂 我写的 英文。
http://code.google.com/p/android/issues/detail?id=3388


http://stackoverflow.com/questions/1187253/a-bug-read-data-from-res-raw-xxxx-txt-but-there-are-so-many-garbage-information

2009年8月03日 18:58
0 0

好像是编码问题吧, eclipse用UTF-8试试?

2009年8月03日 18:58

相关推荐

Global site tag (gtag.js) - Google Analytics