「java去掉bom」java去掉空格和换行符
本篇文章给大家谈谈java去掉bom,以及java去掉空格和换行符对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
html编辑器如何去掉bom字符
先来看看什么是bom头?
在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。
去掉bom头的办法,简单的是下面两种:
1、editplus去BOM头的方法
编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。 运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,
然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。
2、ultraedit去除bom头办法
打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了
怎么样,去掉bom头很简单吧
3、专门写的去除文件BOM头的程序,现在公布出来,可以放在项目根目录,然后运行。
Php代码,请使用工具条复制代码
view sourceprintabout
01
?php
02
if (isset($_GET['dir'])){ //设置文件目录
03
$basedir=$_GET['dir'];
04
}else{
05
$basedir = '.';
06
}
07
$auto = 1;
08
checkdir($basedir);
09
function checkdir($basedir){
10
if ($dh = opendir($basedir)) {
11
while (($file = readdir($dh)) !== false) {
12
if ($file != '.' $file != '..'){
13
if (!is_dir($basedir."/".$file)) {
14
echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." br";
15
}else{
16
$dirname = $basedir."/".$file;
17
checkdir($dirname);
18
}
19
}
20
}
21
closedir($dh);
22
}
23
}
24
function checkBOM ($filename) {
25
global $auto;
26
$contents = file_get_contents($filename);
27
$charset[1] = substr($contents, 0, 1);
28
$charset[2] = substr($contents, 1, 1);
29
$charset[3] = substr($contents, 2, 1);
30
if (ord($charset[1]) == 239 ord($charset[2]) == 187 ord($charset[3]) == 191) {
31
if ($auto == 1) {
32
$rest = substr($contents, 3);
33
rewrite ($filename, $rest);
34
return ("font color=redBOM found, automatically removed._a href=;csdn.net/a/font");
35
} else {
36
return ("font color=redBOM found./font");
37
}
38
}
39
else return ("BOM Not Found.");
40
}
41
function rewrite ($filename, $data) {
42
$filenum = fopen($filename, "w");
43
flock($filenum, LOCK_EX);
44
fwrite($filenum, $data);
45
fclose($filenum);
46
}
47
?
好了,以上就是去掉bom头的一些方法,其实做php的时候不建议用记事本的,最好是用一些专业的ide,这样能防止以上的一些小错误,来提高我们的编码效率和质量!
什么是Bom头 怎样去除PHP文件的Bom头
方法一:用Ultraedit或Editplus打开PHP文件,另存为无Bom的utf-8文件方法二:用Dreamweaver去除Bom头
菜单–修改–页面属性 或者ctrl+j打开页面属性窗口,点选“标题/编码”去掉“包括Unicode签名Bom”前的勾
有Bom的文件太多?这样太麻烦?当然有更好的方法!方法三:用php文件批量去除bom头 将以下这段代码保存为php文件,上传到服务器,用浏览器访问它!?phpif (isset($_GET['dir'])){ //设置文件目录
$basedir=$_GET['dir'];}else{$basedir = '.';}$auto = 1;checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' $file != '..'){
if (!is_dir($basedir./.$file)) {
echo filename: $basedir/$file .checkBOM($basedir/$file). ;}else{$dirname = $basedir./.$file;
checkdir($dirname);}}}closedir($dh);}}function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 ord($charset[2]) == 187 ord($charset[3]) == 191) {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return (font color=redBOM found, automatically removed./font);} else {return (font color=redBOM found./font);}}else return (BOM Not Found.);}function rewrite ($filename, $data) {
$filenum = fopen($filename, w);
flock($filenum, LOCK_EX);
fclose($filenum);}?还用记事本保存?那你真是智商捉急了!
java bom会引起什么问题
BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)。在绝大多数编辑器中都看不到BOM字符,因为它们能理解Unicode,去掉了读取器看不到的题头信息。若要查看某个Unicode文件是否以BOM开头,可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。
因为一些系统或程序不支持BOM,因此带有BOM的Unicode文件有时会带来一些问题。1. JDK1.5以及之前的Reader都不能处理带有BOM的UTF-8编码的文件,解析这种格式的xml文件时,会抛出异常:Content is not allowed in prolog.2. Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。不同的编辑工具对BOM的处理也各不相同。使用Windows自带的记事本将文件保存为UTF-8编码的时候,记事本会自动在文件开头插入BOM(虽然BOM对UTF-8来说并不是必须的),但是editplus就不会这样做。
java判断文件编码格式 怎么判断编码格式
UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。对不希望UTF-8文档带有BOM的程序会带来兼容性问题,例如Java编译器在编译带有BOM的UTF-8源文件时就会出错。而且BOM去掉了UTF-8一个期望的特性,即是在文本全部是ASCII字符时UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
在具体判断时,如果文档不带有BOM,就无法根据BOM做出判断,而且IsTextUnicode API也无法对UTF-8编码的Unicode字符串做出判断。那在编程判断时就要根据UTF-8字符编码的规律进行判断了。
UTF-8是一种多字节编码的字符集,表示一个Unicode字符时,它可以是1个至多个字节,在表示上有规律:
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
这样就可以根据上面的特征对字符串进行遍历来判断一个字符串是不是UTF-8编码了。
举例代码:
java.io.File f=new java.io.File("待判定的文本文件名");
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17b[1]==-69b[2]==-65)
System.out.println(f.getName()+"编码为UTF-8");
else System.out.println(f.getName()+"可能是GBK");
}catch(Exception e){
e.printStackTrace();
}
关于java去掉bom和java去掉空格和换行符的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。