08-01
14

静态化总结(一):UTF-8乱码解决

      这两天一直在搞静态化页面,其实一片文章的模版替换倒是不难,只是在编码问题上卡住了一阵。
    我的这个CMS系统使用的是UTF-8,在静态化页面的时需要在程序中指定编码,不然默认GB2312.如:
    
byte tag_bytes[] = templateContent.getBytes("UTF-8");
      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");


   另外这是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"   )   转化  

      经典乱码“锘”字与解决办法
      接着,在静态化完成之后,我发现页面多出一个“锘"字。这样的错误,说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现“锘 ”这样的一个字符(引号内),把它去掉以后,再运行,OK,运行正常。后来在网上搜索一些文件,给的解释是:UTF8文件的BOM(Byte order Mark)标志,在保存的时候会自动存入!
不管它是干嘛的,现在的目的就是把它去掉,我总结的方法有下面三种:
1、在Linux下打开,去掉后再保存
2、用写字板打开,把光标放到最前后回车,然后再敲删除,重新回到第一行,这样最前面的那个字符就会去掉
3、使用UltraEdit编辑器(很好用的一个编辑器,网上多的是,自己下去),打开高级----配置----Unicode/utf-8 检测,把自动检测UTF-8文件,自动检测没有BOM的Unicode文件等前面的勾全去掉,然后你再打开那个文件,就会发觉“锘 ”这个字符出现了,删除就OK了


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 乱码
相关日志:
评论: 1 | 引用: 0 | 查看次数: 1064
回复回复zx[2008-04-30 02:34 PM | del]
谢谢,问题解决。。哈哈
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭