今天在改一个用BufferedReader读取UTF-8的html文件,读取出来后,文件头有个问号,解决方案很简单,将文件用UtrlEdit打开,然后另存为--格式选择
UTF-8 no bom,在读取就没有问题了,和大家分享一下,如果你也遇到同样的问题。
--------------------------------------------------------------------------------
下面是UTF-8与UTF-8(no bom)格式相比有什么不同,如果有兴趣可以读一下下面的内容。
BOM——Byte Order Mark,就是字节序标记在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。
分享到:
相关推荐
BufferedReader的用法---马克-to-win java视频缓存输入流的介绍
文件内容的读取 BufferedReader
java读取txt文件,可以以文件路径构造这个流,:FileInputStream fin = new FileInputStream("d:/test.txt"); 然后使用这个流直接读取到文件,再使用reader构造BufferedReader,按行读取一整行的文本,作为字符串返回...
java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8; 2.利用 InputStreamReader(new FileInputStream(fileUrl), ...
//构造一个BufferedReader类来读取文件 String s; while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行 wordList.add(s.trim()); } } catch (Exception e) { Logger.getLogger(FileUtil....
本文实例讲述了Android读取本地json文件的方法。分享给大家供大家参考,具体如下: 1、读取本地JSON ,但是显示汉字乱码 public static String readLocalJson(Context context, String fileName){ String json...
用BufferedReader读取这个文件一直乱码,尝试了UTF-8和GB2312,GBK等。还是不行。
* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline()。 * 备注:需要考虑的是异常情况 * @param filePath */...
jdk api-BufferedReader基础、应用、实战
javaIO流实现永久化查询添加学生信息-java-BufferedReader
本人自己重新封装BufferedReader类的文件读取工具类,节省了每次使用文件读取类是的处理和转换工作,并且提供了丰富的方法,可以读取任意行数内容,并且可以带有行号,绝对好!
private static String DEFAULTCHART="UTF-8"; protected static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(ScpClient.class); static private ScpClient instance; private ...
这是一个文件流的读取与写入程序(内部是源码) 是利用BufferedReader 和 BufferedWriter 来进行读取与写入的
文件读写 BufferedReader BufferedWriter 去除代码后面空格 简单 readLine newLine flush
然后通过FileReader和BufferedReader类来读取文件的内容,并使用System.out.println()方法将每一行的内容输出到控制台。最后关闭了打开的文件流。这个简单的示例代码展示了如何使用Java I/O来实现一个文件管理系统,...
其中一个线程从键盘读取数据,放入到队列中,直到读取的数据是字符串quit则结束,线程的任务就是循环读取数据直到特定的字符串quit。另外一个线程,不断的从队列中读取数据(该队列的字符串数据就是另一个线程存入...
isr= new InputStreamReader(new FileInputStream(inputfile), "UTF-8"); }else if(ch.equals("Unicode")){ isr= new InputStreamReader(new FileInputStream(inputfile), "Unicode"); }else { isr= new ...
//需要读取的文件路径 BufferedReader br= new BufferedReader(fr); String s = br.readLine(); while(s!=null)//如果当前行不为空 { if(s.length()>10){ if(s.substring(0,3).contains("G01")){ ...
导出excel多一个sheet,提示如下:Evaluation Only. Created with Aspose.Cells for Java.Copyright 2003 - 2023 Aspose Pty Ltd. try { Resource resource = new ClassPathResource("license.xml"); ...
通过JAVA流读取两个TXT文件 做数据比较