08-01
14
静态化总结(一):UTF-8乱码解决
作者:Java伴侣 日期:2008-01-14
这两天一直在搞静态化页面,其实一片文章的模版替换倒是不难,只是在编码问题上卡住了一阵。
我的这个CMS系统使用的是UTF-8,在静态化页面的时需要在程序中指定编码,不然默认GB2312.如:
反之,在读取模版的时候一样页需要转码:
另外这是CSDN上朋友的一段话:
经典乱码“锘”字与解决办法
接着,在静态化完成之后,我发现页面多出一个“锘"字。这样的错误,说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现“锘 ”这样的一个字符(引号内),把它去掉以后,再运行,OK,运行正常。后来在网上搜索一些文件,给的解释是:UTF8文件的BOM(Byte order Mark)标志,在保存的时候会自动存入!
不管它是干嘛的,现在的目的就是把它去掉,我总结的方法有下面三种:
1、在Linux下打开,去掉后再保存
2、用写字板打开,把光标放到最前后回车,然后再敲删除,重新回到第一行,这样最前面的那个字符就会去掉
3、使用UltraEdit编辑器(很好用的一个编辑器,网上多的是,自己下去),打开高级----配置----Unicode/utf-8 检测,把自动检测UTF-8文件,自动检测没有BOM的Unicode文件等前面的勾全去掉,然后你再打开那个文件,就会发觉“锘 ”这个字符出现了,删除就OK了
我的这个CMS系统使用的是UTF-8,在静态化页面的时需要在程序中指定编码,不然默认GB2312.如:
复制内容到剪贴板 程序代码
byte tag_bytes[] = templateContent.getBytes("UTF-8");
fileoutputstream.write(tag_bytes);
fileoutputstream.write(tag_bytes);
反之,在读取模版的时候一样页需要转码:
复制内容到剪贴板 程序代码
String templateContent = "";
FileInputStream fileinputstream = new FileInputStream(filePath);// 读取模块文件
int lenght = fileinputstream.available();
byte bytes[] = new byte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
templateContent = new String(bytes,"UTF-8");
FileInputStream fileinputstream = new FileInputStream(filePath);// 读取模块文件
int lenght = fileinputstream.available();
byte bytes[] = new byte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
templateContent = new String(bytes,"UTF-8");
另外这是CSDN上朋友的一段话:
复制内容到剪贴板 程序代码
在服务端写东西的时候不要用new String( s.getBytes("UTF-8") ) )转化
直接写
在客户端读的可以用new String( s.getBytes("UTF-8") ),"gbk" ) 转化
用服务端的方法(一)
writer.writer(string)
用客户端的(一)得到String
用new String( s.getBytes("UTF-8") ),"gbk" ) 转化
直接写
在客户端读的可以用new String( s.getBytes("UTF-8") ),"gbk" ) 转化
用服务端的方法(一)
writer.writer(string)
用客户端的(一)得到String
用new String( s.getBytes("UTF-8") ),"gbk" ) 转化
经典乱码“锘”字与解决办法
接着,在静态化完成之后,我发现页面多出一个“锘"字。这样的错误,说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现“锘 ”这样的一个字符(引号内),把它去掉以后,再运行,OK,运行正常。后来在网上搜索一些文件,给的解释是:UTF8文件的BOM(Byte order Mark)标志,在保存的时候会自动存入!
不管它是干嘛的,现在的目的就是把它去掉,我总结的方法有下面三种:
1、在Linux下打开,去掉后再保存
2、用写字板打开,把光标放到最前后回车,然后再敲删除,重新回到第一行,这样最前面的那个字符就会去掉
3、使用UltraEdit编辑器(很好用的一个编辑器,网上多的是,自己下去),打开高级----配置----Unicode/utf-8 检测,把自动检测UTF-8文件,自动检测没有BOM的Unicode文件等前面的勾全去掉,然后你再打开那个文件,就会发觉“锘 ”这个字符出现了,删除就OK了
评论: 1 | 引用: 0 | 查看次数: 1062
回复zx[2008-04-30 02:34 PM | ]
谢谢,问题解决。。哈哈
发表评论